埃德蒙顿华人社区-Edmonton China

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

寻找NHibernate高手

[复制链接]
鲜花(123) 鸡蛋(0)
发表于 2011-7-14 16:47 | 显示全部楼层 |阅读模式
老杨团队,追求完美;客户至上,服务到位!
能否说说以下三个设置的异同啊?6 V' v2 r( W/ w& a3 U
! i: ^2 P. ^/ [. u, u
谢谢
  r$ D( Q1 X( i
4 }5 W& n/ G; a3 B( D<property name="current_session_context_class">web</property>! Z/ x+ z3 f( L) H7 j
<property name="current_session_context_class">call</property>
  f) c. ^$ ^) `( y6 K<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 编辑
- F4 R9 a6 h, k1 {: n' {5 E! x! R
! l( W2 z5 q# Z6 _' MPlease refer to http://docs.jboss.org/hibernate/ ... rnate_reference.pdf) B  u  @5 \0 F
& L/ [. o% n1 j) ^

; u- D6 V. F: ]Chapter 2.5 Contextual Sessions
鲜花(123) 鸡蛋(0)
 楼主| 发表于 2011-7-14 22:31 | 显示全部楼层
老杨团队 追求完美
Please refer to http://docs.jboss.org/hibernate/ ... rnate_reference.pdf
, o) W6 a- x; Z& D' [& I+ w
. c: Z! Y6 j; Y7 V0 o' a
3 q5 {. ?. h, C5 uChapter 2.5 Contextual Sessions
# ~4 O. r) j: o; vgamahu 发表于 2011-7-14 21:56
. u- X9 l# b7 e2 C
" V1 G% k; k7 w1 e7 r
谢谢啊,看了,但还是很模糊. 其实我已经看过不少关于这个问题的文章或书里的章节, 还是没有得出明确的答案, 他们之间的 界定和 差异不是太大.. Z) j4 ~0 K8 m/ c4 ^
0 j. W# {3 Y: R5 X; v- B4 p: w
现在还多了个manage_web,很想知道它和  web/thread_static的差别,也许它能  解决我们现在要解决的问题. 因为 web/thread_static都用过一段时间,   都偶尔有不稳定的  现象出现.
理袁律师事务所
鲜花(2) 鸡蛋(0)
发表于 2011-7-15 09:55 | 显示全部楼层
current_session_context_class 主要是用来配置当前 data transaction session bind to what3 Z. {: t. L* P% e6 S. J/ d, H
基本参数:" z% r) Q+ H) d
jta | thread | managed | custom.Class
% Y( {! L* ^2 i+ I6 i主要是配合
' x2 N1 c- I# r  k, ^SessionFactory.getCurrentSession()
  j0 }1 r" ^' M2 g& [3 k3 [' M: T来用的.
7 K+ I7 E( ~8 s/ [8 A1 x. ?; yThread 指自动绑定到当前进程,managed 是在有些managed environment 如果使用 container-managed transactions (CMT) , 需要自己bind 和 unbind,这样 getCurrentSession() 才可能返回正确,
. j$ u+ c# K% CWeb application 状况下,每一个HttpRequest 都是独立thread, 所以可以在BeginRequest的时候bind, 在EndRequest 的时候Unbind, 这样就是可以使用getCurrentSession(), 例如:
' L. o; I% Z  R; f0 M+ b, ^context.BeginRequest += OpenSession;
1 j, ^6 N! J9 }' R8 ?.Bind(HttpContext.Current, SessionFactory.OpenSession())
2 j% M; l# U3 S! o9 b. X
1 a( V& h' b' W; g( q//do transaction4 O* P7 B$ l5 ~( B# e6 y- s
getCurrentSession().Submit();  I( K1 }- Z9 ]2 C% V
getCurrentSession().RollBack();3 R; n. h5 @2 }  B6 `$ ?" t
...& p0 @8 ?- o/ T) C" U/ E
Unbind(HttpContext.Current, SessionFactory)4 Q8 A/ z! S+ ^0 X3 t& B
* j* d7 ~) p  B7 |
context.EndRequest += CloseSession;
9 z$ {8 I$ n  }5 d1 O- k( D
* F8 j! q7 O. B% d$ ], B( H 如果配置不对,getCurrentSession() 会出错。但是不会引起application 不稳定,查查别的地方吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT-7, 2026-3-7 15:09 , Processed in 0.105431 second(s), 14 queries , Gzip On, APC On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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