私はHibernate内にいくつかの遅延ロードされたmany-to-one
カラムを持つオブジェクトを持っています。私は必ずしも、一連の操作のためにオブジェクトをデータベースに永続させる必要はありません。Hibernateオブジェクトの永続属性をデタッチする方法
オブジェクトを直接取得して、多対1のエンティティにアクセスしようとするたびに、データベースから遅延取得する必要はなく、値を取得できます(そうでない場合は問題ありません)。最新の)セッションを開くことなく。
今はセッションを開き、新しいオブジェクトを作成し、実行する操作のために送信します。私が呼ぶたび
// Hibernate class
public class Foo {
private Long id;
//many-to-one mapping
private Bar barObj;
//getters and setters
}
は今fooObj.getBarObj().getId()
IDの値を取得するには、サーバーへのプロキシの呼び出しがあります。この呼び出しが発生しないようにするために、fooObj
をローカルに保存する必要があります。
フェッチタイプを怠け者にしたいと思います。私が検索したレコードは非常に多く、そのような操作はほとんど必要ありません。特定のオブジェクトを1つだけ取得する方法がより短くありますか? –
次に、2番目の提案を使用してください.- 'join fetch barObj'を明示的に記述しているHQLクエリを使用してフェッチしてください。 –
それは私が多くのそのようなオブジェクトを持っていて、私が世話をしなければならない複数の結合があるので、問題の回避策です。とにかくおかげです。 –