데이터베이스 내에 오브젝트의 큰 트리를 저장하는 가장 좋은 방법은 무엇인지 궁금합니다. 지금까지 내가 folowing 있습니다JPA 지연 디자인 어드 바이스
@Entity
class Element1 {
@OneToMany(fetch=FetchType.LAZY)
Collection<Element2> elements;
....
}
페치 유형이 항상 필요하지 않습니다 element2에 beacause를 LAZY로 설정되어 정말 거대한 (다른 요소의 컬렉션 컬렉션의 컬렉션)이 될 수 있습니다.
문제는 서블릿 (세션이 닫혀 있음)에서 Element2 유형의 요소를 검색 할 때, (물론) lazyness 예외를 얻는 것입니다. 첫 번째 해결책은 쿼리 내에서 요소 컬렉션을 열렬히 가져 오는 것이지만 어떻게해야하는지 언제 알 수 있습니까? 내가 방법을 생성해야합니까 :
Element1 get(Integer Id);
Element1 getEager(Integer Id);
내가 매핑 "반대"Element1이의 필드 요소를 제거하고 수 있는지 궁금 :
: 두 가지 방법을 다음class Element2 {
@ManyToOne
Element1 owner;
.....
}
과
Element1 get(Integer Id);
Collection<Element2> getElements(Element1 owner);
그런 일을하는 가장 좋은 방법은 무엇입니까?
감사합니다.
감사합니다. 마지막 질문 하나만 있다면, Element1이 완전히 가져 오지 않은 경우에 DTO를 사용하는 것이 더 바람직할까요? 아니면 원래 Element1 클래스를 그대로 사용할 수 있습니까? 가장 일반적인 것은 무엇입니까? – user1047847