埃德蒙顿华人社区-Edmonton China

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

寻找NHibernate高手

[复制链接]
鲜花(123) 鸡蛋(0)
发表于 2011-7-14 16:47 | 显示全部楼层 |阅读模式
老杨团队,追求完美;客户至上,服务到位!
能否说说以下三个设置的异同啊?% l$ V6 h  c- u" U/ X

( |  j3 g( w1 E谢谢
% h2 ^- y, s7 ^2 @+ |% i% I, b3 u+ u; y
<property name="current_session_context_class">web</property>
& e, e! d, x+ y: n$ O: }+ T<property name="current_session_context_class">call</property>" v, u& }/ ]9 _/ \
<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 编辑 ! B5 ^3 Q! ^* U; C; |! U0 x5 M$ A3 U

+ z* ~3 ]# s7 K: I' ]$ H" tPlease refer to http://docs.jboss.org/hibernate/ ... rnate_reference.pdf
7 s9 t: o1 B: r4 `7 m, p3 ^! C
3 D% d# v" q) ~
' f* o- I' X( w; BChapter 2.5 Contextual Sessions
鲜花(123) 鸡蛋(0)
 楼主| 发表于 2011-7-14 22:31 | 显示全部楼层
老杨团队 追求完美
Please refer to http://docs.jboss.org/hibernate/ ... rnate_reference.pdf
$ I  O( O7 U9 w& ~, H6 k8 i8 r
4 F  q( E4 l9 ~
% K0 ]# R( C6 x% g( j" u2 e" dChapter 2.5 Contextual Sessions; n9 ^3 g; L+ c* `( b8 C+ x5 J3 @
gamahu 发表于 2011-7-14 21:56

' O5 |+ z6 ?0 p& T+ D7 W
! x8 X; E- [, a谢谢啊,看了,但还是很模糊. 其实我已经看过不少关于这个问题的文章或书里的章节, 还是没有得出明确的答案, 他们之间的 界定和 差异不是太大.
, I2 m6 N7 t/ G& P* X6 I6 @1 [7 d! {3 C$ Y
现在还多了个manage_web,很想知道它和  web/thread_static的差别,也许它能  解决我们现在要解决的问题. 因为 web/thread_static都用过一段时间,   都偶尔有不稳定的  现象出现.
理袁律师事务所
鲜花(2) 鸡蛋(0)
发表于 2011-7-15 09:55 | 显示全部楼层
current_session_context_class 主要是用来配置当前 data transaction session bind to what6 U5 [* I& [# l. x
基本参数:
2 b/ W+ V' _8 g$ }jta | thread | managed | custom.Class# Q" P  ^% P, d
主要是配合5 z2 F, a% ?2 D
SessionFactory.getCurrentSession()
! \/ w2 W* x' J来用的.. Z( ?3 a; c* n2 I5 F9 y* [  ^
Thread 指自动绑定到当前进程,managed 是在有些managed environment 如果使用 container-managed transactions (CMT) , 需要自己bind 和 unbind,这样 getCurrentSession() 才可能返回正确,
$ d% K" Y9 P) x. y3 J' g1 U3 X3 mWeb application 状况下,每一个HttpRequest 都是独立thread, 所以可以在BeginRequest的时候bind, 在EndRequest 的时候Unbind, 这样就是可以使用getCurrentSession(), 例如:! f7 I; ]! ?3 P" X" d9 u
context.BeginRequest += OpenSession;  {% d6 z2 ?" d2 M
.Bind(HttpContext.Current, SessionFactory.OpenSession())2 N$ D* d+ A5 _  Y$ o1 K2 n
/ ]7 r* }6 t" z" `
//do transaction! J/ h% W; k& U$ m/ J- ?8 k  v, ^! j
getCurrentSession().Submit();( c  ~: n5 l$ d1 y4 d6 Q
getCurrentSession().RollBack();9 H" O9 p* |7 [/ z9 ^* A
...
1 a  b2 F# |0 J* I- QUnbind(HttpContext.Current, SessionFactory)
8 C8 [5 }. r- t) H1 i9 r% Q. F" t( |
context.EndRequest += CloseSession;
0 t3 X. m% o# x) n! Z8 A$ c! I9 J; {
如果配置不对,getCurrentSession() 会出错。但是不会引起application 不稳定,查查别的地方吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT-7, 2025-9-16 01:14 , Processed in 0.147907 second(s), 14 queries , Gzip On, APC On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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