로딩

· JPA
스프링은 컨테이너는 트랜잭션 범위의 영속성 콘텍스트 전략을 기본으로 사용한다. 트랜잭션이 같으면 같은 영속성 콘텍스트가 콘텍스트가 공유되고 트랜잭션이 끝나면 영속성 콘텍스트가 닫히는 것이다. 그럼 트랜잭션이 끝나고 엔티티에 지연 로딩으로 연결된 다른 엔티티를 불러오면 어떻게 될까? 보통 트랜잭션은 비즈니스 로직이 있는 서비스단에서 시작하고 종료한다. public class Member { ... @ManyToOne(fetch = FetchType.LAZY); private Team team; } Member member = memberService.getMember(1); // 트랜잭션 종료, 준영속 상태 member.getTeam(); // 종료 후 지연로딩으로 연결된 team 정보 조회 당연히 영속성..
· DDD
애그리거트간에 참조 한 객체가 다른 객체를 참조하는 것 처럼 애그리거트도 다른 애그리거트를 참조한다. 애그리거트의 관리 주체가 애그리거트 루트이므로 애그리거트에서 다른 애그리거트를 참조하는 것은 애그리거트의 루트를 참조하는 것과 같다. 애그리거트를 참조하면 한 애그리거트에서 다른 애그리거트를 수정하지 않도록 주의해야 한다. JPA를 사용할 경우 지연(Lazy)로딩과 즉시(Eager)로딩 두가지 방식으로 로딩이 가능하다. 아이디를 이용한 간접 참조 ID를 이용한 참조는 DB 테이블에서 외래키를 사용해 참조한다. 장점 한 애그리거트에서 다른 애그리거트를 수정하는 문제를 원척적으로 방지할 수 있다. 애그리거트의 경계를 명확히 하고 물리적인 연결을 제거하기 때문에 모델의 복잡도를 낮춰준다. 애그리거트 간의 의존..
beekei
'로딩' 태그의 글 목록