current_session_context.クラス

4896 ワード

普段はヒベルナツを単独で使う場合、属性の設定に慣れています.
<property name=「current of usessiontext uclass」>thread<property>
文書によると、これはhibernate 3.1以降の新たな拡張であり、あるコンテキスト環境(例えば、現在のスレッド)を通して、SessionFactory.getCurrentSession() session .その後、私達はspring、hibernateを統合すると、springの主な配置ファイルの中に、私達もこのような配置を持ち込むことに慣れました.
<property name=「hibernate Properties」>
<props>
<prop key=「hibernature.current-usessiontextuclass」>thread
次に、springプロファイルでは、spring 2.xの宣言式を用いて事務を配置します.
<tx:advice id=「txAdvice」trantionn-manager=「transactionManager」、〈aop:pointcut、public void find(){
Session se=sf.get CurrenntSession()
//ここではset.begintTransationは不要です.もうspringに任せました.
Dept d=(Dept)se.get(Dept.class,new Long(12);
)
異常が発生します. get is not valid without active transaction.
このエラーは一般的にget CurrenntSessionから得られたsessionでは得られなかったtransactionを手動で呼び出す必要があります.Se.BegintTransationを手動で呼び出して、イベントの事務を開きます.問題は、springのプロファイルの中でaopを通してここでspringで事務を管理すると指定したのではないですか?
答え: 
<prop key=「hibernature.current-usessiontextuclass」>threadは
<prop key=「hibernature.currentSession」org.springframe ork.orm.hiberg 3.Spring Session Contect(デフォルト設定)
参考:
1.ヒベルナ文書:
Hibernateを使用するほとんどのアプリケーションは、ある形式の「コンテキスト関連」セッションを必要とし、特定のセッションは、特定のコンテキスト範囲全体で常に有効である.しかし、異なるタイプのアプリケーションに対しては、なぜこのような「コンテキスト」を構成するのか、次の定義は通常困難である.
異なる文脈は「現在」という概念に対して異なる範囲を定義している.
2.hibernateでは、thread、jta、managerの配置は、実は3つのhibernateに対応した実現類です.org.hibernate.context.ThreadLocalSessionContext
3. sessionFactory
hibernate.current_session_context_class org.springframework.orm.hibernate3.SpringSessionContext( )
session spring ( aop spring ), spring ( , thread session, spring , spring thread session )

,
ThreadLocalSessionContext,JTASessionContext,ManagedSessionContext,SpringSessionContext
, org.hibernate.context.CurrentSessionContext ,
  org.hibernate.context.CurrentSessionContext インターフェイスのJavadocは、 についての な があります.
の を しています.currentSession() の は、 のコンテキストに するセッションの を しています.
に、 は っています.スレッドバインディングもコンテキストバインディングも は、CurrenntSession Contectインターフェースを したクラスを って、sessionを します.そして、このクラスのオブジェクトを じて、その されたセッションを して、 が したコンテキスト でgetCurntSessionメソッドを び して たのはいつも じセッションです.