埃德蒙顿华人社区-Edmonton China

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

寻找NHibernate高手

[复制链接]
鲜花(123) 鸡蛋(0)
发表于 2011-7-14 16:47 | 显示全部楼层 |阅读模式
老杨团队,追求完美;客户至上,服务到位!
能否说说以下三个设置的异同啊?! E3 U& R2 N; A! n9 I% `
' j  x9 D/ l% }; k4 y2 s, _
谢谢
( n. ^. g- {4 }/ Q3 b  q  p( g2 }) m4 i: g$ H
<property name="current_session_context_class">web</property>
7 y- n6 B% ~5 p; f: u# {<property name="current_session_context_class">call</property>( s- k# F! a- \; y9 S3 F  [- q0 \
<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 编辑
  v7 _7 v% w% e5 [. I2 r  w/ I+ L) T# g
Please refer to http://docs.jboss.org/hibernate/ ... rnate_reference.pdf. L3 q7 D8 \: H, @

9 A% I& W$ ?$ Y4 \1 _  E2 R7 Y) w$ b; `3 Y) M/ P9 Y( l5 ^
Chapter 2.5 Contextual Sessions
理袁律师事务所
鲜花(123) 鸡蛋(0)
 楼主| 发表于 2011-7-14 22:31 | 显示全部楼层
老杨团队 追求完美
Please refer to http://docs.jboss.org/hibernate/ ... rnate_reference.pdf
$ m' a" ^6 A. q. q9 t1 l4 X3 f5 y
! K3 M/ u0 I4 w) n. M& F
% K0 [4 u( Q/ DChapter 2.5 Contextual Sessions
( k7 [: M" A8 T  u9 ~gamahu 发表于 2011-7-14 21:56
1 X% Y1 X6 S" i2 D0 B% s

0 m! n# V$ s+ w6 z( N谢谢啊,看了,但还是很模糊. 其实我已经看过不少关于这个问题的文章或书里的章节, 还是没有得出明确的答案, 他们之间的 界定和 差异不是太大.8 X/ g0 q7 n! W

( z) W- j5 `5 y. |  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 what
( b6 p* H, q5 w" S  g: d8 \2 h6 q基本参数:+ y0 L& _6 @$ _6 V% J
jta | thread | managed | custom.Class+ L, a0 B7 @1 p
主要是配合4 ^$ C; ~4 F" Z! G
SessionFactory.getCurrentSession()0 r* }6 T4 t0 _8 H
来用的.
! h- x  h- z, h1 E: h0 N7 ]Thread 指自动绑定到当前进程,managed 是在有些managed environment 如果使用 container-managed transactions (CMT) , 需要自己bind 和 unbind,这样 getCurrentSession() 才可能返回正确,
7 }7 r0 [" X4 pWeb application 状况下,每一个HttpRequest 都是独立thread, 所以可以在BeginRequest的时候bind, 在EndRequest 的时候Unbind, 这样就是可以使用getCurrentSession(), 例如:
* t; b& V# H$ k8 Ccontext.BeginRequest += OpenSession;7 w0 V0 k! D  Q6 U2 C  b7 I7 g
.Bind(HttpContext.Current, SessionFactory.OpenSession())
3 j. q# Z! C9 o5 ~" @( _! {/ |# ^/ r  _7 J& V
//do transaction
# n9 o3 e2 j& |7 b; LgetCurrentSession().Submit();
) b) a8 b# P% X0 z9 XgetCurrentSession().RollBack();
! r! h, |7 y; s" \& V' M...
( h" y- o/ Q8 D5 CUnbind(HttpContext.Current, SessionFactory)
! @; P- i: K5 b, d0 \
( j( o3 y' k  l, {! G, m* {context.EndRequest += CloseSession;8 \. q1 E- e6 I4 t  d2 e

( S/ u. W+ |1 I6 e0 G8 Z/ k$ S, ~ 如果配置不对,getCurrentSession() 会出错。但是不会引起application 不稳定,查查别的地方吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT-7, 2026-4-12 12:08 , Processed in 0.175353 second(s), 15 queries , Gzip On, APC On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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