埃德蒙顿华人社区-Edmonton China

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

寻找NHibernate高手

[复制链接]
鲜花(123) 鸡蛋(0)
发表于 2011-7-14 16:47 | 显示全部楼层 |阅读模式
老杨团队,追求完美;客户至上,服务到位!
能否说说以下三个设置的异同啊?. R. Z2 R0 A+ c4 z! V
+ X$ v5 ]3 F( K$ h
谢谢
; I: @6 ?: s3 r2 ^, n9 P8 m5 ^0 Y6 L3 {9 x
<property name="current_session_context_class">web</property>
# r9 L$ a. i6 Q: F4 N$ V<property name="current_session_context_class">call</property>
' z0 d. v4 {0 c! I1 ~<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 编辑 7 j5 r& q$ M% q. c3 {% c
& Y' r, h1 z1 N" Q% `  ~
Please refer to http://docs.jboss.org/hibernate/ ... rnate_reference.pdf7 J) g+ x7 J& X' I( d, X

1 D  v: K- ~0 B# q: n7 b) T/ ]' {$ p( @. Q, d
Chapter 2.5 Contextual Sessions
鲜花(123) 鸡蛋(0)
 楼主| 发表于 2011-7-14 22:31 | 显示全部楼层
老杨团队 追求完美
Please refer to http://docs.jboss.org/hibernate/ ... rnate_reference.pdf2 b. Y2 C/ t* m+ ~# b  M( ]# h1 X
' X( Z2 M$ J- I; v

2 S* @. A7 ?. ~& ^. BChapter 2.5 Contextual Sessions
6 q& T' ~& g1 K, kgamahu 发表于 2011-7-14 21:56

: m  F& j! z) b. j- }6 ^- G6 S5 R* v
谢谢啊,看了,但还是很模糊. 其实我已经看过不少关于这个问题的文章或书里的章节, 还是没有得出明确的答案, 他们之间的 界定和 差异不是太大.9 O, c. e( ]' O
# O4 B* |/ x# [# |. b& ?
现在还多了个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' B% Q! Z6 F9 D# m# l
基本参数:
0 c9 [! v2 s/ v! n5 E# }jta | thread | managed | custom.Class
0 w- o* W9 N$ z9 q* y主要是配合7 ^+ u" }" N9 C/ _, ]
SessionFactory.getCurrentSession()
- G1 @! z( l- e2 i: j' |来用的.
! H+ o8 x% M; l- m1 A& UThread 指自动绑定到当前进程,managed 是在有些managed environment 如果使用 container-managed transactions (CMT) , 需要自己bind 和 unbind,这样 getCurrentSession() 才可能返回正确,
* w/ D- f7 `; h  o4 iWeb application 状况下,每一个HttpRequest 都是独立thread, 所以可以在BeginRequest的时候bind, 在EndRequest 的时候Unbind, 这样就是可以使用getCurrentSession(), 例如:/ c4 a) i- \+ d9 l8 C: ?
context.BeginRequest += OpenSession;
. a* \: Q$ ^& W5 w9 U9 n! G5 j* F.Bind(HttpContext.Current, SessionFactory.OpenSession())* j. ]8 S% }, Z: s, ~- E! s" a' }

& ~& o7 Y+ {9 |0 S) ^0 r//do transaction. A4 p. Y: l7 v
getCurrentSession().Submit();
" E. N# D9 @, ^+ x* wgetCurrentSession().RollBack();
  }7 u7 s: O* Q( q: n+ g...; t2 f+ Z5 u& S* o- g% H
Unbind(HttpContext.Current, SessionFactory)# d4 Y& r3 T" s$ y$ E  r

5 r* V7 t5 j% \# B( Jcontext.EndRequest += CloseSession;
: H" ^" E- z9 `# j. }. o
2 _& O, K0 X! T4 J5 h# h. I 如果配置不对,getCurrentSession() 会出错。但是不会引起application 不稳定,查查别的地方吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT-7, 2026-3-7 20:13 , Processed in 0.094530 second(s), 14 queries , Gzip On, APC On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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