埃德蒙顿华人社区-Edmonton China

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

寻找NHibernate高手

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

# G/ ~! f) s8 c2 ~谢谢" }( ^$ Y3 ?9 }  v/ o; T- V5 `" z
/ ^5 l9 a2 G- ?  N
<property name="current_session_context_class">web</property>
: R) W. N% A, r: G+ y1 T<property name="current_session_context_class">call</property>5 U: a6 A" m' {
<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 编辑
) |, j, ~, J* j, r" L
2 f0 c* F8 P7 x( {, ~Please refer to http://docs.jboss.org/hibernate/ ... rnate_reference.pdf$ O: l7 I% Q- N- k

0 w4 m% |% E4 m# I9 n! j9 V3 b! p
7 R; e  ^; X6 x$ {: f( {Chapter 2.5 Contextual Sessions
鲜花(123) 鸡蛋(0)
 楼主| 发表于 2011-7-14 22:31 | 显示全部楼层
老杨团队 追求完美
Please refer to http://docs.jboss.org/hibernate/ ... rnate_reference.pdf& ?. a2 k# L/ ?7 `7 m# B

" ]0 C# O) l- e) t
, H7 m& F6 ~, c2 K' ]Chapter 2.5 Contextual Sessions
7 K9 [. ^/ S, k+ x+ Ugamahu 发表于 2011-7-14 21:56

3 X, I+ ^+ T  v& R  k& w- l! }6 H  [0 {
谢谢啊,看了,但还是很模糊. 其实我已经看过不少关于这个问题的文章或书里的章节, 还是没有得出明确的答案, 他们之间的 界定和 差异不是太大.( C( ], Y$ t1 d% O
2 e1 q* B8 Q# X, P! _, w0 v
现在还多了个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! k* r+ A7 q" M. k6 d  E
基本参数:  L# J4 V  L2 h% ]6 i; S, Z
jta | thread | managed | custom.Class
5 L' C# ]+ i0 X& e% F4 S, M% O主要是配合$ F: I! L( p* x: f! t6 ]
SessionFactory.getCurrentSession(); D( Z% y0 T! ~6 H0 ^' W
来用的.
" |9 ~! h  [% x) oThread 指自动绑定到当前进程,managed 是在有些managed environment 如果使用 container-managed transactions (CMT) , 需要自己bind 和 unbind,这样 getCurrentSession() 才可能返回正确,, P6 U. l- Z! w9 s5 W1 {! ^
Web application 状况下,每一个HttpRequest 都是独立thread, 所以可以在BeginRequest的时候bind, 在EndRequest 的时候Unbind, 这样就是可以使用getCurrentSession(), 例如:9 \5 d/ Z2 E  a8 d. |3 K
context.BeginRequest += OpenSession;6 z  m- M, f4 `' v4 H) [
.Bind(HttpContext.Current, SessionFactory.OpenSession())
) k( c& q9 }1 {6 Z* a3 }$ |8 B' j
& }- C9 V: e7 p0 Q//do transaction7 o) Z& Q4 U3 m. M# d
getCurrentSession().Submit();
9 F# Y( {% H% k7 x( \0 L  o: L- ~getCurrentSession().RollBack();
0 ^9 L, z/ z* [% G& p. Z...3 r  R  |: F! j. ~# E* ~" y. N
Unbind(HttpContext.Current, SessionFactory); w( v4 B  Q9 d

. o% V) N# O: W" T% o: dcontext.EndRequest += CloseSession;
$ C  k9 |2 w7 z* [
) c' S" A; ]* [" {5 Z, ]0 k 如果配置不对,getCurrentSession() 会出错。但是不会引起application 不稳定,查查别的地方吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT-7, 2026-1-17 05:16 , Processed in 0.137403 second(s), 14 queries , Gzip On, APC On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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