多辺のページ付けが必要なHibernateで1対多の関係をマップするにはどうすればよいですか?
OneToManyアノテーション(またはその相当するxml相当)を使用すると、片側オブジェクトを読み込むと関連するオブジェクトがすべて取得され、メモリ惨事の原因となるため、便利です(lazy読み込み)。
可能なアプローチ(既に使用しています)は、DAO実装にゲッターメソッドを追加することです。そこではページネーションパラメータを導入できます。しかし、カスケーディングのようないくつかの機能を失うため、これは理想的ではありません(たとえば、オブジェクトを関連付けるためにDAOクラスにsetterメソッドを含める必要があります)。また、一方のオブジェクトには関連するmany-sideオブジェクトを取得するメソッドがないため、いくつかのOOPの意味が失われます。最高のソリューションは何ですか?
私はさらに2つのクラスを持っているとしましょう。A has-many B.
OneToManyアノテーションを使用してA.getAllB()メソッドを書くことはできません。したがって、結果に改ページを行うには、getAllB()メソッドを使用して別のADaoImplクラスを作成します。このメソッドでは、一度に1ページのデータだけを返すページネーションパラメータを含めることができます。これは正しいです?どんな助けもありがとう。Hibernateでページングされた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」感覚の一部を回復する可能性があります。
関連する問題
- 1. Hibernate - OneToMany関係
- 2. Hibernate @OneToMany関係
- 3. Hibernate @OneToMany関係マッピング
- 4. Spring Hibernate onetomanyの関係
- 5. @OnetoMany関係Hibernate Spring MVC
- 6. hibernate OneToMany関係のためのhqlクエリの作成方法?
- 7. Symfony2 OneToMany関係
- 8. JPA OneToMany MappedBy関係
- 9. Symfonyの関係OneToMany
- 10. Marshall OnetoManyの関係を持つhibernateのpojoクラス
- 11. Hibernate OneToMany関係は新しいデータをマップしません
- 12. mappedBy(親子関係)とキャッシュの問題を持つHibernate @OneToMany
- 13. Hibernate @OneToManyの関係が原因でJSON結果の無限ループまたは空のエントリが返される
- 14. OneToMany関係で追加されたオブジェクトのIDが更新されない
- 15. Hibernateを使用した@OneToManyバッグ関係への複数の参照
- 16. OneToManyとManyToOneの関係
- 17. Doctrine OneToMany関係のエラー
- 18. の永続化OneToMany関係
- 19. OneToMany関係のStackoverflowError JPA
- 20. NHibernate/Hibernate OneToMany関係でinverse = falseを使用するのはいつですか?
- 21. SpringBoot/HibernateでOneToMany関係を持つ子オブジェクトを保存できません
- 22. OneToMany関係で外部キー列にnullを設定する方法、Hibernate
- 23. Spring Data JPA OneToManyページングFetchType subselect
- 24. Hibernateは:eagerloaded OneToMany
- 25. Hibernate OneToMany、natural PK
- 26. OneToMany/ManyToOneの教義関係でネストされたオブジェクトを取得する
- 27. JPAエンティティが格納されていませんOneToMany関係
- 28. Hibernateユーザメッセージ関係
- 29. 関係whith hibernate
- 30. Hibernate Envers - @OneToMany関係にあるエンティティの変更を監査する方法は?