埃德蒙顿华人社区-Edmonton China

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

寻找NHibernate高手

[复制链接]
鲜花(123) 鸡蛋(0)
发表于 2011-7-14 16:47 | 显示全部楼层 |阅读模式
老杨团队,追求完美;客户至上,服务到位!
能否说说以下三个设置的异同啊?) b8 V$ c4 k3 o
) Q& D* v: o% ^8 N+ k
谢谢$ y0 V5 j5 k4 a0 J
, L/ `- \, B* v8 l) |7 B; Y
<property name="current_session_context_class">web</property>* Q9 O# p1 `/ n: E
<property name="current_session_context_class">call</property>
/ }! H; @; U- A<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 编辑 : S# q7 p0 o/ H' E/ V; _4 Y

! v+ W  w/ y. h3 L* MPlease refer to http://docs.jboss.org/hibernate/ ... rnate_reference.pdf3 k/ r+ p. e8 e* p5 }1 d0 d0 h
7 ]+ z% \+ n2 ^( F0 \( @9 T
5 x/ l7 t2 d" k" R: ]9 e
Chapter 2.5 Contextual Sessions
鲜花(123) 鸡蛋(0)
 楼主| 发表于 2011-7-14 22:31 | 显示全部楼层
老杨团队 追求完美
Please refer to http://docs.jboss.org/hibernate/ ... rnate_reference.pdf4 E! A* P3 Y5 U% k7 H, G% m
) N! a& E& `1 z1 i

( J" E, B+ C2 t6 ^& S0 R' {9 j" OChapter 2.5 Contextual Sessions, H4 L" f! m) T: R  q$ }7 X
gamahu 发表于 2011-7-14 21:56
& H2 v# `: `. V

! T* k- o( Z" s! P. B谢谢啊,看了,但还是很模糊. 其实我已经看过不少关于这个问题的文章或书里的章节, 还是没有得出明确的答案, 他们之间的 界定和 差异不是太大.
* W; s4 c$ q  h6 Q+ W( W/ G! c! |! a. p! _/ R; f: `
现在还多了个manage_web,很想知道它和  web/thread_static的差别,也许它能  解决我们现在要解决的问题. 因为 web/thread_static都用过一段时间,   都偶尔有不稳定的  现象出现.
鲜花(2) 鸡蛋(0)
发表于 2011-7-15 09:55 | 显示全部楼层
current_session_context_class 主要是用来配置当前 data transaction session bind to what8 ?. D3 k  x* ?& E. g" q
基本参数:
- e5 s( j, S. qjta | thread | managed | custom.Class1 n/ e! `5 ]4 k; l( x. a/ ?; ]! ^
主要是配合
6 q! R% S! Z' \% q, |+ ISessionFactory.getCurrentSession()
1 I2 h% H, ~4 n来用的.
: F( }+ i) i* mThread 指自动绑定到当前进程,managed 是在有些managed environment 如果使用 container-managed transactions (CMT) , 需要自己bind 和 unbind,这样 getCurrentSession() 才可能返回正确,
, R( ?: C9 i+ X1 _9 ~" l7 tWeb application 状况下,每一个HttpRequest 都是独立thread, 所以可以在BeginRequest的时候bind, 在EndRequest 的时候Unbind, 这样就是可以使用getCurrentSession(), 例如:
5 E- A# c. i7 h, X1 b  J+ Jcontext.BeginRequest += OpenSession;% k8 y0 N2 U) ~  m
.Bind(HttpContext.Current, SessionFactory.OpenSession())
0 C+ y3 S% F5 F# e9 @$ B: A& \7 D: k
//do transaction- B' ]/ q! O" X3 X7 Y
getCurrentSession().Submit();
: Z- E; @6 C4 X, d( P" v5 {getCurrentSession().RollBack();
: n; Y8 N0 D" E# r& G...
2 e5 e0 W% X. R: g4 E0 v$ d0 lUnbind(HttpContext.Current, SessionFactory)' x# a3 e3 `- _- K# E* X

$ x5 R4 _) A6 d# }context.EndRequest += CloseSession;* S. _! M4 o1 S% @6 @
) l3 d  p% W7 L
如果配置不对,getCurrentSession() 会出错。但是不会引起application 不稳定,查查别的地方吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT-7, 2026-6-11 02:10 , Processed in 0.119661 second(s), 14 queries , Gzip On, APC On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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