多辺のページ付けが必要な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. Spring Hibernate onetomanyの関係
- 3. mappedBy(親子関係)とキャッシュの問題を持つHibernate @OneToMany
- 4. Hibernate @OneToManyの関係が原因でJSON結果の無限ループまたは空のエントリが返される
- 5. Doctrine OneToMany関係のエラー
- 6. OneToManyとManyToOneの関係
- 7. NHibernate/Hibernate OneToMany関係でinverse = falseを使用するのはいつですか?
- 8. OneToMany関係で外部キー列にnullを設定する方法、Hibernate
- 9. Hibernateは:eagerloaded OneToMany
- 10. Hibernate:双方向関係のないOneToMany-Childエンティティの親を取得する
- 11. symfonyの2:教義OneToMany関係
- 12. OneToMany関係の教義生成
- 13. JPA ManytoOneと永続ないOneToMany関係
- 14. テストoneToMany関係Laravel、雄弁は
- 15. Hibernateマッピング協会OneToMany
- 16. Hibernate/JPA ManyToOne対OneToMany
- 17. Hibernate親子関係
- 18. Hibernate @OneToManyとUNIQUE制約
- 19. Hibernateの検索と関係
- 20. HibernateのMaven依存関係
- 21. JPA Hibernate双方向関係
- 22. 私はそれらの2つのエンティティをしましたOneToMany関係
- 23. の管理複数のエンティティは、OneToManyの関係で、
- 24. JPAエンティティのOneToMany関係には何がないのですか?
- 25. JPAでの無限再帰参照OneToMany、ManyToOne関係
- 26. JPA OneToMany関係で中間テーブル名を指定する
- 27. JPA @OneToMany関係テーブルは私のアプリでは十分な列
- 28. Playで@OneToMany関係のあるJPAオブジェクトを削除してください!フレームワーク
- 29. Hibernate注釈の使用方法@ManyToOneと@OneToManyの関連付け
- 30. 私は次のコードで書かれているJPA継承とOneToMany関係