埃德蒙顿华人社区-Edmonton China

 找回密码
 注册
查看: 1001|回复: 4

寻找NHibernate高手

[复制链接]
鲜花(123) 鸡蛋(0)
发表于 2011-7-14 16:47 | 显示全部楼层 |阅读模式
老杨团队,追求完美;客户至上,服务到位!
能否说说以下三个设置的异同啊?' R, f* D( m1 \4 x) `2 ]
! o* Y* V( B' y
谢谢; |* |& D% A3 _8 O( _( R+ ?
- T5 U: @/ m- M5 ~$ \2 b
<property name="current_session_context_class">web</property>+ u/ ]2 L: ^' J$ P" i
<property name="current_session_context_class">call</property>2 ^- y5 C8 m8 q! i) r2 C5 e' v
<property name="current_session_context_class">Thread_static</property>
大型搬家
鲜花(123) 鸡蛋(0)
 楼主| 发表于 2011-7-14 20:52 | 显示全部楼层
自己顶一下,等高手出现.
理袁律师事务所
鲜花(2) 鸡蛋(0)
发表于 2011-7-14 20:56 | 显示全部楼层
本帖最后由 gamahu 于 2011-7-14 22:47 编辑
8 w4 a, T5 p2 a5 o
9 l1 \+ ?; e6 A1 s* x4 p6 E% r3 mPlease refer to http://docs.jboss.org/hibernate/ ... rnate_reference.pdf
9 a* l% m6 P1 c+ B! `9 L9 I
9 }8 E0 N6 h. H- ?- t( m' h! n; O
  L) G% H3 K# _/ }1 zChapter 2.5 Contextual Sessions
鲜花(123) 鸡蛋(0)
 楼主| 发表于 2011-7-14 22:31 | 显示全部楼层
老杨团队 追求完美
Please refer to http://docs.jboss.org/hibernate/ ... rnate_reference.pdf- V: `, V) q4 K5 d
" \/ q. Y4 ?- M3 `# h1 P
7 d$ Z! C# I, l" ^3 y9 c
Chapter 2.5 Contextual Sessions
; H7 S: h( S5 ]5 K; A6 o1 Y# ~gamahu 发表于 2011-7-14 21:56
1 O+ k+ n" `2 `* Y
4 F; @" U0 b+ ?9 M) r+ s
谢谢啊,看了,但还是很模糊. 其实我已经看过不少关于这个问题的文章或书里的章节, 还是没有得出明确的答案, 他们之间的 界定和 差异不是太大.
9 l4 s  k1 Z/ t1 c/ K
) v+ w8 i  \( p, O现在还多了个manage_web,很想知道它和  web/thread_static的差别,也许它能  解决我们现在要解决的问题. 因为 web/thread_static都用过一段时间,   都偶尔有不稳定的  现象出现.
鲜花(2) 鸡蛋(0)
发表于 2011-7-15 09:55 | 显示全部楼层
current_session_context_class 主要是用来配置当前 data transaction session bind to what2 o/ I/ @2 E; ~* V) h/ T
基本参数:
8 `* @' S% Q" Q. R7 E( {# _jta | thread | managed | custom.Class
% S& Y% ^9 f& S, A! s! C/ d主要是配合3 D0 o% B4 Y2 n# U: _+ f4 G1 v) \
SessionFactory.getCurrentSession()$ Y# B) z# g9 S  ]# m1 d8 c' {4 w: g# O
来用的.* z! L- G0 F, ~; R' K# ?; i
Thread 指自动绑定到当前进程,managed 是在有些managed environment 如果使用 container-managed transactions (CMT) , 需要自己bind 和 unbind,这样 getCurrentSession() 才可能返回正确,
# j) e% ^$ ^8 fWeb application 状况下,每一个HttpRequest 都是独立thread, 所以可以在BeginRequest的时候bind, 在EndRequest 的时候Unbind, 这样就是可以使用getCurrentSession(), 例如:
# ]' L/ I' }6 R1 c! s4 |! icontext.BeginRequest += OpenSession;
' v9 `7 `; t* o4 X1 U, z! q! g.Bind(HttpContext.Current, SessionFactory.OpenSession()). p; w* a+ ]# L* ~0 u" [5 f) x' i3 C

8 Q: X; M" n; h8 V3 Y//do transaction- k- I5 \  f; n, d$ ]" t
getCurrentSession().Submit();) M1 S, [8 R  k+ i
getCurrentSession().RollBack();
( _1 r& f' p$ v& O...
1 M; N9 U9 {- C, {Unbind(HttpContext.Current, SessionFactory)6 w9 p6 [* X( I5 Z: g6 [
5 B( ~) u( w% x+ W4 v8 l1 a, ]: S
context.EndRequest += CloseSession;
  O& u9 _, z2 k
0 d1 h5 ^: B7 z6 x9 c. [! d- z 如果配置不对,getCurrentSession() 会出错。但是不会引起application 不稳定,查查别的地方吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系我们|小黑屋|手机版|Archiver|埃德蒙顿中文网

GMT-7, 2026-2-17 06:56 , Processed in 0.137340 second(s), 14 queries , Gzip On, APC On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表