 鲜花( 2)  鸡蛋( 0)
|
current_session_context_class 主要是用来配置当前 data transaction session bind to what
6 L# j% B" R2 m" N1 T% t9 y' U基本参数:$ M& a+ }5 K7 D
jta | thread | managed | custom.Class$ r) d8 u3 J9 M1 [
主要是配合
" A' e4 k* V& }" X( z4 DSessionFactory.getCurrentSession()
* [2 @0 i: |9 A2 _, J/ a, I8 V来用的.
& O& E# s4 U& R, E& Y( N1 Y1 OThread 指自动绑定到当前进程,managed 是在有些managed environment 如果使用 container-managed transactions (CMT) , 需要自己bind 和 unbind,这样 getCurrentSession() 才可能返回正确," p! Z) z$ O L" b, @$ h0 A
Web application 状况下,每一个HttpRequest 都是独立thread, 所以可以在BeginRequest的时候bind, 在EndRequest 的时候Unbind, 这样就是可以使用getCurrentSession(), 例如:4 ~* J5 b4 p9 H* W9 O
context.BeginRequest += OpenSession;
4 r9 _. u# E6 a9 k.Bind(HttpContext.Current, SessionFactory.OpenSession())* E' @/ } b8 u9 W B
6 T0 D( c8 J4 u" }( M- c7 q
//do transaction
7 \ g7 K6 |% OgetCurrentSession().Submit();
$ f2 Q* g0 L3 W T8 PgetCurrentSession().RollBack();
" o% P3 \3 Q9 L, k1 \...$ z6 M: d8 Q I4 Z1 L" b
Unbind(HttpContext.Current, SessionFactory)2 O, m4 O$ s! q0 |
2 E* d: R% g- M# S& d
context.EndRequest += CloseSession;
' K2 y- P3 g6 t4 \1 j2 L; n a$ k1 H2 v1 M- u% Z* Z2 N' j9 }
如果配置不对,getCurrentSession() 会出错。但是不会引起application 不稳定,查查别的地方吧。 |
|