2011-01-02 13 views
1

Lazy=falseを設定すると、hibernateは自動的にオブジェクトを必要なセットにロードします。Java Hibernate Lazy = false

<set name="Options" table="ATTRIBUTEOPTION" inverse="false" cascade="all" lazy="false"> 
     <key> 
      <column name="ATTRIBUTEID" /> 
     </key> 
     <one-to-many class="com.BiddingSystem.Models.AttributeOption" /> 
</set> 

が、私のXMLマッピングでは、私は真=怠惰置いて、私のアプリケーションでは、いくつかの場所で私はすべての属性オプションをロードすることを決定し、私はそれを手動で行う必要があり、またはすることができます技術がある場合今私はlazy=falseを設定したいと思う休止状態を教えて?

答えて

4

実行時に設定を変更することはできません。しかし、Hiberante.initialize(..)を使用して、遅延コレクションを初期化することができます。

3

これは、getOptions()を使って手作業で簡単に行うことができます。しかし、今のエンティティすでにあなたをロードするときにオプションが必要になることならば、あなたは行うことができます熱心このように参加フェッチ使用してフェッチ:

select c from EntityX c left join fetch c.Options 

をそして、あなたは余分な選択した場合の多くを回避することができbeacuseことが重要optimitzationです必要なデータが事前に取得されます。

+0

私は私のプロジェクトにhibernateを含めました。今は最適化する必要があります! – Noor

関連する問題