많은면을 페이지 매김해야하는 최대 절전 모드에서 일대 다 관계를 어떻게 매핑 할 수 있습니까? (예 : 수백 개 이상의 관련 객체가 있음)
OneToMany 주석 (또는 해당 xml 해당 항목)을 사용하면 유용하지 않습니다. 한쪽 객체를로드하면 관련 객체가 모두 검색되어 메모리 재난을 일으킬 수 있기 때문입니다 (lazy 로딩).
가능한 접근법 (이미 사용하고 있습니다)은 페이지 매김 매개 변수를 도입 할 수있는 DAO 구현에 getter 메서드를 추가하는 것입니다. 그러나 캐스 케이 딩 (예 : 개체를 연결하는 데 DAO 클래스에 setter 메서드를 포함해야하는 등)와 같은 일부 기능을 잃어 버리기 때문에 이것이 이상적이지 않습니다. 게다가, 한쪽 객체는 관련 many-side 객체를 검색하는 메소드가 없기 때문에 일부 OOP 감각을 잃게됩니다. 가장 좋은 솔루션은 무엇입니까?
더 많은 것을 설명하기 위해 두 클래스 사이에 다음과 같은 관계가 있다고 가정 해 보겠습니다. A가 많음 B
OneToMany 주석을 사용하여 A.getAllB() 메서드를 작성할 수 없습니다. 따라서 결과에 페이지 매김을 적용하려면 getAllB() 메서드를 사용하여 별도의 ADaoImpl 클래스를 만들고 여기서 페이지 매기기 매개 변수를 포함시켜 한 번에 한 페이지의 데이터 만 반환 할 수 있습니다. 이 올바른지? 어떤 도움을 주시면 감사하겠습니다.하이버 네이트 페이지 매김 OneToMany 관계
5
A
답변
2
나는 당신이 제안하고있는 것과 똑같은 일을 할 것이라고 생각한다 : 페이지 매김 매개 변수를 취하고 지정된 결과 페이지를 반환하는 나의 DAO에 새로운 메소드를 만든다. 자녀를 부모 개체에 보관하기를 원하는지 여부는 귀하에게 달려 있습니다. 이러한 객체에 대해 임시 필드를 만들 수 있습니다.
public class Parent {
@Transient
private List<Child> children;
}
public class ParentDao {
// Solution 1 - You can keep the parent/child association
public void loadChildren(Parent parent, int firstResult, int maxResults) {
// do your query
parent.setChildren(query.list());
}
// Solution 2 - Or just have your dao directly return the children and remove the list from Parent
public List<Children> getChildren(Parent parent, int firstResult, int maxResults) {
// do your query
return query.list();
}
}
나는 당신이 코드의 당신의 OO 느낌을 깨는에 대해 무엇을 의미하는지 알고있다. 하지만 실제로 페이지 매김은 데이터 계층의 기능입니다. 첫 번째 솔루션을 사용하면 멋진 "OO"느낌을 복원 할 수 있습니다.
관련 문제
- 1. 하이버 네이트 쿼리 일대일 관계
- 2. 하이버 네이트 매핑 - 다 대일 관계
- 3. 하이버 네이트 질의
- 4. 고성능 하이버 네이트 삽입
- 5. 하이버 네이트 검색 쿼리?
- 6. 하이버 네이트 @NamedQuery와 예약어
- 7. 하이버 네이트 : 가상 컬럼
- 8. 하이버 네이트 SessionFactory를
- 9. 하이버 네이트 (자바 포함)
- 10. 메이븐 2와 하이버 네이트
- 11. 하이버 네이트 대신
- 12. 하이버 네이트 엔티티는
- 13. 하이버 네이트 튜토리얼 - 에러 수신
- 14. 하이버 네이트/NHibernate 매핑 규칙
- 15. 많은 복잡한 하이버 네이트 매핑
- 16. 자바 하이버 네이트 런타임 예외
- 17. 하이버 네이트 JPQL 유형이 문자열
- 18. 오버로드 하이버 네이트 매핑 POJO의
- 19. 하이버 네이트 - ManyToOne - 저장 - org.hibernate.TransientObjectException :
- 20. 하이버 네이트 검색에서 데이터 인덱싱
- 21. 하이버 네이트 머지가 애트리뷰트 컬렉션과 작동하지 않는다.
- 22. 하이버 네이트, 기본 키로 검색 테이블
- 23. 하이버 네이트 도구를 사용하여 EJB없이 하이버 네이트 어노테이션으로 POJO를 생성 할 수 있습니까?
- 24. java 하이버 네이트 오라클 세션이 닫히지 않음
- 25. 하이버 네이트 매핑 일대 다, 이상한 예제
- 26. 하이버 네이트 일대 다 외래 키 문제
- 27. 기본 키 생성 MySQL 하이버 네이트
- 28. 하이버 네이트 쿼리 (SQL이 아님) 로깅
- 29. 봄 하이버 네이트 LocalSessionFactoryBean에서 별도의 매핑 리소스
- 30. Map 내에서 UserType을 하이버 네이트 매핑