2

何百もの行を表示するリスト ビューの一部のプロパティのみを読み込む正しい方法を見つけようとしています。

たとえば、多数のプロパティを持つ Person エンティティを想像してみてください。リストの姓と名のみを取得したいと考えています。

Hibernate/JPAでこれを達成する最良の方法は何ですか?

A) 1 対 1 の関係を使用して、エンティティがいくつかのプロパティのみを保持し、残りが個別のエンティティ (およびテーブル) にあるように、エンティティを配置する必要がありますか?

B) Hibernate の遅延プロパティ フェッチを使用する必要がありますか? マニュアルでさえ、それは「ほとんどマーケティング機能」だと言っていますか?

C) これを行う他の方法はありますか?

4

3 に答える 3

3

JPQLNEW演算子を利用できます。DTO オブジェクトを作成し、JPQL クエリで初期化できます。

public class PersonDTO {

   private String firstName;
   private String surname;

   public PersonDTO(String firstName, String surname) {
      this.firstName = firstName;
      this.surname = surname;
   }

   // getters setters

}

Select NEW PersonDTO(p.firstName, p.surname) From Person p;
于 2013-03-06T19:45:33.123 に答える
1

考えられるもう 1 つの可能性は、同じテーブルに対して 2 つの異なるマッピングを定義することです。たとえばPersonOverview、いくつかのプロパティのみをマップし、ほとんどの人の大規模なコレクションを取得するために使用されPersonDetailsますが、利用可能なすべての人のプロパティをマップしますが、表示/編集のために特定の人物を取得する必要がある場合にのみ使用されます。

于 2013-03-06T20:04:00.333 に答える
1

を最高の状態で使用するために、パラダイムORMを尊重し、物事をカプセル化しようとする解決策 1 を選択します。OOP主に 2 つのプロパティのみが必要な場合は、これら 2 つの専用のクラスを用意し、それを他のクラスに関連付けるのが理にかなっていると思います。

于 2013-03-06T19:46:17.570 に答える