 鲜花( 2)  鸡蛋( 0)
|
current_session_context_class 主要是用来配置当前 data transaction session bind to what8 ?. D3 k x* ?& E. g" q
基本参数:
- e5 s( j, S. qjta | thread | managed | custom.Class1 n/ e! `5 ]4 k; l( x. a/ ?; ]! ^
主要是配合
6 q! R% S! Z' \% q, |+ ISessionFactory.getCurrentSession()
1 I2 h% H, ~4 n来用的.
: F( }+ i) i* mThread 指自动绑定到当前进程,managed 是在有些managed environment 如果使用 container-managed transactions (CMT) , 需要自己bind 和 unbind,这样 getCurrentSession() 才可能返回正确,
, R( ?: C9 i+ X1 _9 ~" l7 tWeb application 状况下,每一个HttpRequest 都是独立thread, 所以可以在BeginRequest的时候bind, 在EndRequest 的时候Unbind, 这样就是可以使用getCurrentSession(), 例如:
5 E- A# c. i7 h, X1 b J+ Jcontext.BeginRequest += OpenSession;% k8 y0 N2 U) ~ m
.Bind(HttpContext.Current, SessionFactory.OpenSession())
0 C+ y3 S% F5 F# e9 @$ B: A& \7 D: k
//do transaction- B' ]/ q! O" X3 X7 Y
getCurrentSession().Submit();
: Z- E; @6 C4 X, d( P" v5 {getCurrentSession().RollBack();
: n; Y8 N0 D" E# r& G...
2 e5 e0 W% X. R: g4 E0 v$ d0 lUnbind(HttpContext.Current, SessionFactory)' x# a3 e3 `- _- K# E* X
$ x5 R4 _) A6 d# }context.EndRequest += CloseSession;* S. _! M4 o1 S% @6 @
) l3 d p% W7 L
如果配置不对,getCurrentSession() 会出错。但是不会引起application 不稳定,查查别的地方吧。 |
|