2016-06-15 10 views
0

まずは、私はHibernateを初めて使う人です。 私は、Netbeansで構築されたスタンドアロンのJavaアプリケーションを、可能な限りMVCモデルに保存しようとしています。私のモデルクラスは、できるだけデータベースのテーブルやカラムに似ています。冗長性を避けるため、データベースは正規化されています。 しかし、私は、モデルクラスの多くで特定のプロパティを利用できると便利だと気付きました。このプロパティはデータベースで使用できますが、ほとんどの場合、取得するには複数の結合を行う必要があります。 したがって、私は簡単にアクセスできるように、このプロパティをモデルクラスに追加しました。HibernateのTransientプロパティを使用

例: Object AObject Bとの関係は、Object Cの関係にあります。 Object Cproperty Xです。 リレーションは1対多です。 Object Aは、プライマリキーがObject Bの列であり、以下同様です。 今、Object Aproperty Xに接続されています。私は答えを得るために複数の結合をしなければならない。 Property XObject Aにも当てはまりますが、冗長性のためデータベースのObject Aのプロパティとしては欲しくなりません。このアプリケーションでは、便利なアクセスのためにObject Aのクラスにこのproperty Xを追加します。

私自身の設計(サービス)クラスの代わりにHibernateを実装したいのですが、私はこのプロパティをどうするべきか分かりません。私はそれをPOJOで 'Transient'と定義しましたが、このプロパティをどのように埋めるのですか?私がHibernateにデータベースを取得させてオブジェクト(Object A)を返すようにすれば、このプロパティは持たないでしょう。このプロパティを持つコンストラクタを追加し、Hibernateのオブジェクトをこのプロパティを含むコンストラクタに変換し、それを要求した元のメソッドに戻す必要がありますか?

これを行う正しい方法は何ですか?

答えて

1

あなたはおそらくあなたのクラスAにおけるこのようなもの持って休止状態を使用している場合:あなたは、データベースからのAエンティティを取得するときに

@OneToMany 
private Collection<C> listOfC; 

:あなたが持っているだろうBでは

@OneToMany 
private Collection<B> listOfB; 

a.getlistOfB(0).getListOfC(0).getX(); 
+0

これはセットですが、同じアイデアです。ありがとう:) – Century

関連する問題