埃德蒙顿华人社区-Edmonton China

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

寻找NHibernate高手

[复制链接]
鲜花(123) 鸡蛋(0)
发表于 2011-7-14 16:47 | 显示全部楼层 |阅读模式
老杨团队,追求完美;客户至上,服务到位!
能否说说以下三个设置的异同啊?
# j- R. S9 m5 j5 B, F7 s) b6 K1 B
谢谢
& U+ W5 k3 E6 R: }' N7 G, c+ g# {3 [4 e0 M
<property name="current_session_context_class">web</property>) n0 y6 u( b) T8 A! \5 d
<property name="current_session_context_class">call</property>
5 b' [0 s% ]( V/ w+ W<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 编辑
, r+ x  l2 w6 O% @' c+ T5 v" r  P; A/ Y) K) K
Please refer to http://docs.jboss.org/hibernate/ ... rnate_reference.pdf2 P5 T1 W7 j+ H
7 g. G7 Y$ s/ ^! ?. ~: {/ R9 h; Y

5 p+ m4 I& x9 k' SChapter 2.5 Contextual Sessions
鲜花(123) 鸡蛋(0)
 楼主| 发表于 2011-7-14 22:31 | 显示全部楼层
老杨团队 追求完美
Please refer to http://docs.jboss.org/hibernate/ ... rnate_reference.pdf
# N3 Y9 b; i; Z, ~7 \7 k3 e, y# H0 r( h, _7 M0 P. N7 ]
- g0 H, Z/ n0 L. h( ]' m
Chapter 2.5 Contextual Sessions
/ D' `& B7 \8 O8 |3 d- {gamahu 发表于 2011-7-14 21:56

, j( m2 e1 J% [9 z, l$ P. ^/ W
; B7 ]! L7 v3 I谢谢啊,看了,但还是很模糊. 其实我已经看过不少关于这个问题的文章或书里的章节, 还是没有得出明确的答案, 他们之间的 界定和 差异不是太大.
' o) w4 u4 r0 }" W
  U# k8 H1 u0 }" y% @* [* ]现在还多了个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
7 j5 @$ p$ z6 S) x基本参数:6 Z2 o; m( g+ F/ p8 X7 [4 ^# x6 k
jta | thread | managed | custom.Class
% y5 {1 ~! x/ f9 p2 b主要是配合) L9 x$ k; h2 ~
SessionFactory.getCurrentSession()% {- x. C" t8 H+ W
来用的.3 r& H& B1 h# v" K
Thread 指自动绑定到当前进程,managed 是在有些managed environment 如果使用 container-managed transactions (CMT) , 需要自己bind 和 unbind,这样 getCurrentSession() 才可能返回正确,
; c8 ^  i: ?- L( m5 j9 Y# F" qWeb application 状况下,每一个HttpRequest 都是独立thread, 所以可以在BeginRequest的时候bind, 在EndRequest 的时候Unbind, 这样就是可以使用getCurrentSession(), 例如:; x4 w' A  W1 |3 j9 d" w3 j
context.BeginRequest += OpenSession;* d- S1 l5 Y, Z- h& {) J
.Bind(HttpContext.Current, SessionFactory.OpenSession())  Y0 [' d" f# N

9 D- A: n* w7 b//do transaction
( L# M; d2 t# H  ?) cgetCurrentSession().Submit();
2 H5 R. U. O2 N2 ZgetCurrentSession().RollBack();/ U5 r7 A, p' {2 v- p- @
...
, \* D& r& u  d  A7 C& kUnbind(HttpContext.Current, SessionFactory)' ~. ?1 K* q! Q
" V1 V9 U/ F" k5 a  k; n
context.EndRequest += CloseSession;% X# g/ x% H( j9 D; d
6 K; d/ O5 |& v! A) n
如果配置不对,getCurrentSession() 会出错。但是不会引起application 不稳定,查查别的地方吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT-7, 2025-8-8 02:41 , Processed in 0.121960 second(s), 15 queries , Gzip On, APC On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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