埃德蒙顿华人社区-Edmonton China

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

寻找NHibernate高手

[复制链接]
鲜花(123) 鸡蛋(0)
发表于 2011-7-14 16:47 | 显示全部楼层 |阅读模式
老杨团队,追求完美;客户至上,服务到位!
能否说说以下三个设置的异同啊?
1 t( O0 Q, Q  O' K* o% i2 B; _
6 e' Z8 h7 I/ Q# a, `谢谢
2 ~: Z3 |) u7 I
5 x) c. B; l9 Q  s9 ~4 b9 D<property name="current_session_context_class">web</property>: Y6 ~$ G1 q% M8 a
<property name="current_session_context_class">call</property>
' S) i( b& H4 Q<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 编辑 / K4 L3 d5 `' l9 `! K

0 C6 ~: r8 E- B7 \6 \$ f8 w6 HPlease refer to http://docs.jboss.org/hibernate/ ... rnate_reference.pdf
, Y8 @7 Q. }9 D# e* e+ o5 K$ p# P* y4 l/ A7 q2 ~. z* n

. @4 V1 G) E/ yChapter 2.5 Contextual Sessions
鲜花(123) 鸡蛋(0)
 楼主| 发表于 2011-7-14 22:31 | 显示全部楼层
老杨团队 追求完美
Please refer to http://docs.jboss.org/hibernate/ ... rnate_reference.pdf" f! M+ W* J- D" \# j8 k$ p

" R( I0 O  I. B1 p$ w  `& c" Y) v( }* q1 A/ S  U2 t
Chapter 2.5 Contextual Sessions. Q/ ?3 o. v. C' n
gamahu 发表于 2011-7-14 21:56

9 H$ C3 [5 Y( @3 n2 y% G) V9 n9 M; _/ f1 n" a' `! ?' X
谢谢啊,看了,但还是很模糊. 其实我已经看过不少关于这个问题的文章或书里的章节, 还是没有得出明确的答案, 他们之间的 界定和 差异不是太大.3 x' {$ T6 l5 ^; o- Y/ ^
: B; `) R4 I1 b4 D
现在还多了个manage_web,很想知道它和  web/thread_static的差别,也许它能  解决我们现在要解决的问题. 因为 web/thread_static都用过一段时间,   都偶尔有不稳定的  现象出现.
理袁律师事务所
鲜花(2) 鸡蛋(0)
发表于 2011-7-15 09:55 | 显示全部楼层
current_session_context_class 主要是用来配置当前 data transaction session bind to what
- H& W9 g, R2 U基本参数:
$ c) H  r: |- e' P" bjta | thread | managed | custom.Class
* ~1 V: _% ]' |5 c( y8 \! ^主要是配合
) N) `* i& ^% ~9 i& f5 d8 u3 xSessionFactory.getCurrentSession()
" B5 t* G  U# l1 k$ I4 I* `来用的.- _4 d' o( Y) f( W9 B
Thread 指自动绑定到当前进程,managed 是在有些managed environment 如果使用 container-managed transactions (CMT) , 需要自己bind 和 unbind,这样 getCurrentSession() 才可能返回正确,3 R- M* N# C! n) v+ V% i/ b! ?. E8 T
Web application 状况下,每一个HttpRequest 都是独立thread, 所以可以在BeginRequest的时候bind, 在EndRequest 的时候Unbind, 这样就是可以使用getCurrentSession(), 例如:
( S' N# k( b# ~! ncontext.BeginRequest += OpenSession;
% n. J% }$ b1 h9 E; e.Bind(HttpContext.Current, SessionFactory.OpenSession())8 _6 A+ d( B' ?
% a9 n4 j1 n* K4 a4 ]' E: E: I4 i5 X
//do transaction
: X7 g4 J% b; l9 \2 K0 |" PgetCurrentSession().Submit();0 X% D5 h9 r% T- |! ]
getCurrentSession().RollBack();
- b+ @0 m2 G% d, e7 [; G...
: T9 Y( n* i( l+ m" p! s! F( {Unbind(HttpContext.Current, SessionFactory)/ G7 S' q' W0 U+ P% `+ a0 Q

( Y! `3 @8 e: J! Acontext.EndRequest += CloseSession;" v! a% Z8 K/ h; O! D. C
4 g! J( R& u# F9 r8 Y
如果配置不对,getCurrentSession() 会出错。但是不会引起application 不稳定,查查别的地方吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT-7, 2026-1-2 04:28 , Processed in 0.174212 second(s), 14 queries , Gzip On, APC On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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