 鲜花( 2)  鸡蛋( 0)
|
current_session_context_class 主要是用来配置当前 data transaction session bind to what
Q6 l0 @! L* N基本参数:- O5 R# ?) E( ^5 s3 w
jta | thread | managed | custom.Class& q+ e7 D$ a+ |1 N; e3 Q. |
主要是配合8 m- J; i9 j, p5 }! J
SessionFactory.getCurrentSession(); x: h$ T& N+ g+ P$ b
来用的.. F6 O3 |, J2 G
Thread 指自动绑定到当前进程,managed 是在有些managed environment 如果使用 container-managed transactions (CMT) , 需要自己bind 和 unbind,这样 getCurrentSession() 才可能返回正确,9 F" H! H- Z" @6 f
Web application 状况下,每一个HttpRequest 都是独立thread, 所以可以在BeginRequest的时候bind, 在EndRequest 的时候Unbind, 这样就是可以使用getCurrentSession(), 例如:& ]; S. |& ]+ W2 b, r: W1 _
context.BeginRequest += OpenSession;0 V0 _% c3 L3 C
.Bind(HttpContext.Current, SessionFactory.OpenSession())
5 }1 ?, t; u. v* N* B
" Z. [1 @/ D& U# p//do transaction; N2 ^$ @# M* }7 A# K
getCurrentSession().Submit();
4 K, r& O( S( P! D3 WgetCurrentSession().RollBack();
3 ]0 K. d% p D" }...* z5 ]! ] T# g/ y- F1 k( M
Unbind(HttpContext.Current, SessionFactory)* n) ^8 h- g# l; Q3 y5 R
5 ~/ b" R4 L1 O% d2 e
context.EndRequest += CloseSession;
& Y" l1 i' J; Z
) j* g+ _6 m" Z3 z5 o6 T f9 o6 V 如果配置不对,getCurrentSession() 会出错。但是不会引起application 不稳定,查查别的地方吧。 |
|