埃德蒙顿华人社区-Edmonton China

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

寻找NHibernate高手

[复制链接]
鲜花(123) 鸡蛋(0)
发表于 2011-7-14 16:47 | 显示全部楼层 |阅读模式
老杨团队,追求完美;客户至上,服务到位!
能否说说以下三个设置的异同啊?. v& B5 E+ N/ e2 G2 g8 p1 C# x  n

) y+ o) B2 _$ A谢谢1 A. i% D* l4 d; y

1 f" z/ R, Z$ R$ W<property name="current_session_context_class">web</property>
- Y! r( Z' Y0 `7 e<property name="current_session_context_class">call</property>0 X4 o/ K5 k; L+ v3 }
<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 编辑 $ _- G3 z/ W6 R

; d( y8 M( }. b: ~  \  p* {Please refer to http://docs.jboss.org/hibernate/ ... rnate_reference.pdf
: s$ x5 D# O! H! i9 B. D- F) |7 R+ n) K. n; z. k3 p9 t% \+ b4 [7 V

% i2 t; l% v/ P) oChapter 2.5 Contextual Sessions
鲜花(123) 鸡蛋(0)
 楼主| 发表于 2011-7-14 22:31 | 显示全部楼层
老杨团队 追求完美
Please refer to http://docs.jboss.org/hibernate/ ... rnate_reference.pdf5 ~6 {/ U: L0 m9 K5 ^- ]0 P
- B4 G2 j( H5 R; {

4 |. @* _% e2 dChapter 2.5 Contextual Sessions7 [. ^* Q' m8 T# H* _
gamahu 发表于 2011-7-14 21:56
  o' c8 L8 ~; B9 V( g2 t
: @& t! |' b' Z
谢谢啊,看了,但还是很模糊. 其实我已经看过不少关于这个问题的文章或书里的章节, 还是没有得出明确的答案, 他们之间的 界定和 差异不是太大.
5 F; q0 p5 ~6 W
; s5 @8 Q' c7 S& ^' O+ {" ]6 r现在还多了个manage_web,很想知道它和  web/thread_static的差别,也许它能  解决我们现在要解决的问题. 因为 web/thread_static都用过一段时间,   都偶尔有不稳定的  现象出现.
鲜花(2) 鸡蛋(0)
发表于 2011-7-15 09:55 | 显示全部楼层
current_session_context_class 主要是用来配置当前 data transaction session bind to what5 ?2 y5 c) k6 m1 v, g" _
基本参数:
8 C% K& ^9 G0 z% n, b8 |jta | thread | managed | custom.Class
: f# o+ V! Z! l6 H8 b主要是配合
9 R1 D5 q# L) l9 o; l5 n8 F" DSessionFactory.getCurrentSession()3 k5 f! k2 P, [
来用的.
* U6 K2 M0 a0 O8 QThread 指自动绑定到当前进程,managed 是在有些managed environment 如果使用 container-managed transactions (CMT) , 需要自己bind 和 unbind,这样 getCurrentSession() 才可能返回正确,- h. \& d2 S8 |5 b. L5 t3 c5 Q
Web application 状况下,每一个HttpRequest 都是独立thread, 所以可以在BeginRequest的时候bind, 在EndRequest 的时候Unbind, 这样就是可以使用getCurrentSession(), 例如:
8 v- q6 ~. j' J& p- O& W% q" ^context.BeginRequest += OpenSession;3 d( W" x9 H' s
.Bind(HttpContext.Current, SessionFactory.OpenSession()): d. b, ^. Q: h
. o4 H, [7 G/ |, g" ^
//do transaction
7 K$ g& f& \, b( V$ ?* Q& EgetCurrentSession().Submit();
+ g9 \+ L, R3 ~0 {+ n2 igetCurrentSession().RollBack();& G$ ~& Q* d4 l4 v1 n
...6 a) z- A0 Q  e7 L0 u* O
Unbind(HttpContext.Current, SessionFactory)
' r2 T7 x  e2 f8 l; ^1 R3 ^2 b# {4 j+ O# F, E: L1 T4 p' [$ s9 S
context.EndRequest += CloseSession;
- Q. e4 j& b- R) j
+ ^8 {% u$ w  @" @ 如果配置不对,getCurrentSession() 会出错。但是不会引起application 不稳定,查查别的地方吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT-7, 2026-4-19 12:33 , Processed in 0.461847 second(s), 13 queries , Gzip On, APC On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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