 鲜花( 2)  鸡蛋( 0)
|
current_session_context_class 主要是用来配置当前 data transaction session bind to what5 t. P% R3 P- t0 @* h$ [5 @) U
基本参数:
9 u( K5 J' b: Z9 j! Xjta | thread | managed | custom.Class) l: D- }7 O, v1 K3 M4 M4 x& I' E* N
主要是配合: ]7 t' G; C3 `
SessionFactory.getCurrentSession()
5 s* F, G( P2 _来用的.0 y6 O9 Y6 I; [ j1 j
Thread 指自动绑定到当前进程,managed 是在有些managed environment 如果使用 container-managed transactions (CMT) , 需要自己bind 和 unbind,这样 getCurrentSession() 才可能返回正确,/ s3 w& ~# p1 F; V, G q0 W
Web application 状况下,每一个HttpRequest 都是独立thread, 所以可以在BeginRequest的时候bind, 在EndRequest 的时候Unbind, 这样就是可以使用getCurrentSession(), 例如:, f5 M1 H& ^- r+ Z! s$ o
context.BeginRequest += OpenSession;* U( p+ A; D5 N% K$ M
.Bind(HttpContext.Current, SessionFactory.OpenSession())" [. p; B% q0 [ s
( |8 u6 K: l+ |# V3 K6 L7 ~1 n: R" l//do transaction8 p X3 Q+ H0 u6 q' v
getCurrentSession().Submit();
1 U; [, R) s4 G; d# b. EgetCurrentSession().RollBack();+ y/ v# Q V6 @" C o4 e: C
...; P$ L9 G; v3 s, I" {) p) T
Unbind(HttpContext.Current, SessionFactory)
9 B5 e+ ^' A& @. }/ x5 L" R. X, F
" ^3 E/ d% ~+ b% y0 Gcontext.EndRequest += CloseSession;! S" D9 b- B* F6 i- \# N
. W! h2 n* P5 ?) I: P3 o0 ?: R* B1 X
如果配置不对,getCurrentSession() 会出错。但是不会引起application 不稳定,查查别的地方吧。 |
|