埃德蒙顿华人社区-Edmonton China

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

寻找NHibernate高手

[复制链接]
鲜花(123) 鸡蛋(0)
发表于 2011-7-14 16:47 | 显示全部楼层 |阅读模式
老杨团队,追求完美;客户至上,服务到位!
能否说说以下三个设置的异同啊?  e& P* @& C# e) Y; X

7 m0 a% O4 p9 S谢谢$ W& B0 r$ @; X. O7 L

4 b+ T4 }  n0 K+ i+ t/ @<property name="current_session_context_class">web</property>8 s; h# ^- ?0 \. h/ P# i3 c
<property name="current_session_context_class">call</property>
* g/ _+ k6 c+ u' ?/ t  i- _<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 编辑
) [9 {) |+ n) c* I9 a# a, Y+ ^: E) T
Please refer to http://docs.jboss.org/hibernate/ ... rnate_reference.pdf% t7 j. `/ i* c! i. g5 I# t/ }/ y
, F) g& h7 ]5 V6 g+ ]  ?9 A  _' b5 \- x
+ a5 t! T- B* o3 M
Chapter 2.5 Contextual Sessions
鲜花(123) 鸡蛋(0)
 楼主| 发表于 2011-7-14 22:31 | 显示全部楼层
老杨团队 追求完美
Please refer to http://docs.jboss.org/hibernate/ ... rnate_reference.pdf
' r" l8 S* w2 G' f
7 X# C9 u/ K8 W  S
9 S, q. V9 k  A" lChapter 2.5 Contextual Sessions" h" h" _4 U) F" N+ H' W
gamahu 发表于 2011-7-14 21:56
4 d6 ~# ?( |; V- F5 i2 @" I6 m
: M3 W4 d! ?* J$ Y7 ^; n9 {
谢谢啊,看了,但还是很模糊. 其实我已经看过不少关于这个问题的文章或书里的章节, 还是没有得出明确的答案, 他们之间的 界定和 差异不是太大.
: [# L$ [* k6 ^! Q2 s) G, N# {/ y# i: B! l" j
现在还多了个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
- o; D$ t  y* W* N/ M& R; W6 F- M基本参数:
: c7 X7 U: F# O5 ?( Gjta | thread | managed | custom.Class: E+ @6 j! P; o
主要是配合' {0 B% s, P6 `
SessionFactory.getCurrentSession()6 `$ k8 r/ @8 Q
来用的.
6 S# Q& A( j. y. x& A, I, ?Thread 指自动绑定到当前进程,managed 是在有些managed environment 如果使用 container-managed transactions (CMT) , 需要自己bind 和 unbind,这样 getCurrentSession() 才可能返回正确,
7 Z8 @5 w, |( Y  pWeb application 状况下,每一个HttpRequest 都是独立thread, 所以可以在BeginRequest的时候bind, 在EndRequest 的时候Unbind, 这样就是可以使用getCurrentSession(), 例如:
4 K5 k* H: z4 Z( g0 C: v2 _( Icontext.BeginRequest += OpenSession;3 r2 t* T* h- b* U& v1 R1 w
.Bind(HttpContext.Current, SessionFactory.OpenSession())7 C# J+ ^2 \1 I( \9 h

4 S" H/ F: K* ?$ u6 M! Q1 J//do transaction
& c( d3 B4 v( C2 k. I* sgetCurrentSession().Submit();
7 k- X  q' m* V3 i" U; c$ vgetCurrentSession().RollBack();
" ?4 Y0 x/ W1 P6 }  x3 i...
# w7 s3 \: \# S. }% Q  kUnbind(HttpContext.Current, SessionFactory)+ z- j: C. z" l3 K  B

1 ?3 K4 p" k$ W1 ]' k# I$ V5 F; Vcontext.EndRequest += CloseSession;
1 u! ?1 O# l9 Q% l# J* }* Z( b1 m" c
如果配置不对,getCurrentSession() 会出错。但是不会引起application 不稳定,查查别的地方吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT-7, 2026-10-14 03:35 , Processed in 0.720555 second(s), 14 queries , Gzip On, APC On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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