TIL

Chapter4 리포지터리와 모델 구현

4.1 JPA를 이용한 리포지터리 구현

RDBMS 사용 시 객체 기반의 도메인 모델과 관계형 데이터 모델 간 매핑을 처리하는 기술로 ORM만한 것이 없다.

4.1.1 모듈 위치

4.3 매핑 구현

4.3.1 엔티티와 밸류 기본 매핑 구현

4.3.4 AttributeConverter를 이용한 밸류 매핑 처리

4.3.7 밸류를 이용한 ID 매핑

4.3.8 별도 테이블에 저장하는 밸류 매핑

4.3.9 밸류 컬렉션은 @Entity로 매핑하기

4.3.10 ID 참조와 조인 테이블을 이용한 단방향 M-N 매핑

@Entity
public class Product {
	@EmbeddedId
	private ProductId id;

	@ElementCollection
	@CollectionTable(
		name = "Product_category",
		joinColumns = @JoinColumn(name="product_id")
	)
	private Set<CategoryId> categoryIds;
	// ...
}

4.4 애그리거트 로딩 전략

4.5 애그리거트의 영속성 전파

4.6 식별자 생성 기능

public class CreateProductService {

	private ProductIdService idService;
	private ProductRepository productRepositoroy;

	@Transactional
	public ProductId createProduct(ProductCreationReq req) {
		ProductId id = idService.nextId();
		Product product = new Product(id, req.getDetail());
		productRepository.save(product);
		return id;
	}
}

4.7 도메인 구현과 DIP