2010-12-20 19 views
1

私は永続化レイヤーとしてhibernateを使用する学生プロジェクトを指導しています。仕事中の私のプロジェクトから、私はすでに冬眠によく慣れており、いくつかの「トラブル」でそれを使用することができます。しかし、このプロジェクトでは、セッション、古くなったオブジェクト、および「オブジェクトが別のセッションからロードされました」というエラーに常に問題があります。Hibernateセッションを使用する最も簡単な方法

私がセッションを使用するには、できるだけ簡単な方法を探していますどのようなので

理想は次のようになります。

  • セッションは、それはかどうかは関係ないはずのどこ
  • からフェッチすることができます指定されたオブジェクトはセッションAでロードされ、その後セッションBで更新されました。

これは単一プロセスのGUIアプリケーションです。 current_session_context_classの現在の設定はthreadです。しかし、私はセッション変数(私はいくつかの問題を引き起こすと思います)に静的フィールドを使用し、それを一度だけ取得します。

ありがとうございました!

乾杯、これらのエラーが起こるなぜあなたはORM、の理解を教えていないと仮定すると、 レト

答えて

2

学生は、などなどなどで離れて来ることになっている知識の一部ではない、あなただけのHibernateをデータベースラッパーとして動作させ、他のものを習得しながらデータを取得できるようにします。

これはおそらくあなたの最善の策である:

StatelessSession session = sessionFactory.openStatelessSession(); 

ステートレスセッションでは、効果的に「ORMのための自動コミットモード」で、Hibernateがにつれて生-JDBCラッパーに近いです。セッションなし、L1キャッシュなし、永続コンテキストなし。オブジェクトを返すだけのSQL/HQL。

+0

ご質問:yap thatsゴール。彼らはあまりにも早い時期にこれらの概念にさらされています。いずれにしても、休止状態には1001の方法があり、ドキュメンテーションにはこれらの改善のステップが(その制限と要件とともに)明確に示されていないことが少し残念です。私はステートレスセッションと完全にコンテナ管理のトランザクションプロバイダの間に大きな方法があることを知っています。等:)しかし、それでも、単純なことにはあまりにも複雑すぎると感じています。とにかく、ヒントのおかげで! – reto