 鲜花( 2)  鸡蛋( 0)
|
current_session_context_class 主要是用来配置当前 data transaction session bind to what( Z! i+ c @/ Q
基本参数:
8 d* k. ^ @% s9 K7 X' e- V ujta | thread | managed | custom.Class. D( p/ w/ ~! I+ f
主要是配合6 R5 N; t, J' x1 T' [9 d1 ?6 U
SessionFactory.getCurrentSession()5 K2 A. ~1 n/ A4 z! d# J# |, ^
来用的.
% p! x7 a; O d' {' ^Thread 指自动绑定到当前进程,managed 是在有些managed environment 如果使用 container-managed transactions (CMT) , 需要自己bind 和 unbind,这样 getCurrentSession() 才可能返回正确,
9 g3 ^/ A/ N$ q- EWeb application 状况下,每一个HttpRequest 都是独立thread, 所以可以在BeginRequest的时候bind, 在EndRequest 的时候Unbind, 这样就是可以使用getCurrentSession(), 例如:
7 w# X) t8 x) v' K) ~6 k5 ^context.BeginRequest += OpenSession;
' J% \( ~( }* K( a# ~.Bind(HttpContext.Current, SessionFactory.OpenSession())# x, r4 I% Q3 ?1 u1 Y& U# B) p+ c
) P3 q0 ?1 G- \; m! D- D" n//do transaction/ F; r! k4 e6 r1 `9 m
getCurrentSession().Submit();3 Z8 b# ^6 v0 v; n& I+ x3 X
getCurrentSession().RollBack();
1 ?' k' F* E& {...
7 R& m' r3 f/ C/ A7 \0 fUnbind(HttpContext.Current, SessionFactory) [+ b* p8 p3 e
4 Y" h7 d4 @ F- U u7 h
context.EndRequest += CloseSession;) U0 G1 H2 m8 k$ F4 ? x# m6 j( J+ ^
" X- H$ u! V( @. x4 D
如果配置不对,getCurrentSession() 会出错。但是不会引起application 不稳定,查查别的地方吧。 |
|