埃德蒙顿华人社区-Edmonton China

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

寻找NHibernate高手

[复制链接]
鲜花(123) 鸡蛋(0)
发表于 2011-7-14 16:47 | 显示全部楼层 |阅读模式
老杨团队,追求完美;客户至上,服务到位!
能否说说以下三个设置的异同啊?; k; T! S+ W/ {0 A/ f

7 N4 D. T) j; p+ |谢谢
' P5 ]1 R" m' J* H1 {' u$ a' H5 h, y; ]% Z
<property name="current_session_context_class">web</property>! F8 ?+ ~/ r( g; [
<property name="current_session_context_class">call</property>' Q6 I( _1 f. M& i
<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 编辑
) Q7 b2 ~- f7 E# |; h. X; q
9 p" y( x+ |+ s- r# g7 D$ d8 H: bPlease refer to http://docs.jboss.org/hibernate/ ... rnate_reference.pdf4 H' [3 w/ a6 n' i2 d4 I
8 M: K) J$ C' n. d' X
1 Z) e* o7 b' {8 b2 P* p
Chapter 2.5 Contextual Sessions
鲜花(123) 鸡蛋(0)
 楼主| 发表于 2011-7-14 22:31 | 显示全部楼层
老杨团队 追求完美
Please refer to http://docs.jboss.org/hibernate/ ... rnate_reference.pdf
- D% E; M4 R; i6 v/ }' L; C$ l! Z; b7 J, k

: |; r* `0 Y# j) O" KChapter 2.5 Contextual Sessions& |9 }; c' T/ Y) v) g
gamahu 发表于 2011-7-14 21:56

# u$ O: Z" i, y  ~  `6 G  ~
5 R2 w7 O" v5 a0 X* \谢谢啊,看了,但还是很模糊. 其实我已经看过不少关于这个问题的文章或书里的章节, 还是没有得出明确的答案, 他们之间的 界定和 差异不是太大.
0 Y! w0 F) r! A+ J+ O, g3 B  m- w6 _% K- \
现在还多了个manage_web,很想知道它和  web/thread_static的差别,也许它能  解决我们现在要解决的问题. 因为 web/thread_static都用过一段时间,   都偶尔有不稳定的  现象出现.
鲜花(2) 鸡蛋(0)
发表于 2011-7-15 09:55 | 显示全部楼层
current_session_context_class 主要是用来配置当前 data transaction session bind to what3 b& N+ x8 C  U' j4 g0 A) a( a
基本参数:/ U9 R; |0 t9 v$ X6 s
jta | thread | managed | custom.Class
: j. r: K* E. `主要是配合; c' m) V1 N# [% M. [+ `
SessionFactory.getCurrentSession()
6 \3 F$ f# ~/ o7 Y来用的.
8 t2 |9 S: {* j  Q; N; FThread 指自动绑定到当前进程,managed 是在有些managed environment 如果使用 container-managed transactions (CMT) , 需要自己bind 和 unbind,这样 getCurrentSession() 才可能返回正确,
- T( i$ ~( [* z+ p* e3 {% bWeb application 状况下,每一个HttpRequest 都是独立thread, 所以可以在BeginRequest的时候bind, 在EndRequest 的时候Unbind, 这样就是可以使用getCurrentSession(), 例如:
2 Q" q! y7 l2 ^6 [0 F6 n2 p: scontext.BeginRequest += OpenSession;
" g: N! u3 l8 H0 a  a' z2 j.Bind(HttpContext.Current, SessionFactory.OpenSession())" S9 u8 x, g2 P, h; E

! }4 A" v! `+ k/ }* b, z4 R0 l//do transaction
7 y6 L1 o2 Y! U5 t0 TgetCurrentSession().Submit();
: A  |( g5 B6 agetCurrentSession().RollBack();$ ]$ s7 }& w* r$ R/ i* {
...% g  b% R% J2 \6 g
Unbind(HttpContext.Current, SessionFactory)
/ y/ @' G! z, h9 o
+ [2 o9 x5 N3 v) @# {' pcontext.EndRequest += CloseSession;* a9 R' Z9 Q* P8 L" A/ Z
7 K- S9 F; @1 T( e
如果配置不对,getCurrentSession() 会出错。但是不会引起application 不稳定,查查别的地方吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT-7, 2025-12-11 10:57 , Processed in 0.125626 second(s), 13 queries , Gzip On, APC On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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