埃德蒙顿华人社区-Edmonton China

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

寻找NHibernate高手

[复制链接]
鲜花(123) 鸡蛋(0)
发表于 2011-7-14 16:47 | 显示全部楼层 |阅读模式
老杨团队,追求完美;客户至上,服务到位!
能否说说以下三个设置的异同啊?
0 {4 a" t6 j/ i; C4 x& P
# U/ o4 l' y' W3 G. p& v, k3 e谢谢& j5 O2 R  P- ~4 A: B

9 O9 Q3 d) I7 l) Z<property name="current_session_context_class">web</property>
, C) D- T/ w$ Y) R<property name="current_session_context_class">call</property>
* Z" h& s. _' z8 ~<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 编辑
5 E9 @& j$ q# O5 X4 a6 c  d8 @9 D) z
Please refer to http://docs.jboss.org/hibernate/ ... rnate_reference.pdf( d; z* P' U! {9 S8 C- Z0 R' q! M5 @
- L5 a% L8 h/ L$ L
7 P  Y- }; U7 b: m
Chapter 2.5 Contextual Sessions
鲜花(123) 鸡蛋(0)
 楼主| 发表于 2011-7-14 22:31 | 显示全部楼层
老杨团队 追求完美
Please refer to http://docs.jboss.org/hibernate/ ... rnate_reference.pdf
4 H- K/ O/ g* ^) l$ z
$ e) R. q0 l5 ]7 o* b4 X& Z0 k, C- k, b0 s
Chapter 2.5 Contextual Sessions; N9 X1 h3 R$ v1 i& a4 a, G" g
gamahu 发表于 2011-7-14 21:56

' d5 O7 k: ?  F' S0 R1 o* U8 A1 l( N- J. c* y; T
谢谢啊,看了,但还是很模糊. 其实我已经看过不少关于这个问题的文章或书里的章节, 还是没有得出明确的答案, 他们之间的 界定和 差异不是太大.
  H& d3 K* H" r1 E  p0 M! ?. o$ I+ w3 e
现在还多了个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
2 |  S6 V  t# I% P( B  `) }5 A基本参数:
3 c* l8 H1 r1 G8 i* B, e6 ljta | thread | managed | custom.Class0 @# |- r" u$ F) m
主要是配合; e2 ^* t' O8 l6 v4 I& Q
SessionFactory.getCurrentSession()
# a* L% `: j, e+ E2 ~来用的.
$ I8 o( F  b( q% I/ c/ AThread 指自动绑定到当前进程,managed 是在有些managed environment 如果使用 container-managed transactions (CMT) , 需要自己bind 和 unbind,这样 getCurrentSession() 才可能返回正确,
8 b+ U  M; U5 K& j7 S* M! A* qWeb application 状况下,每一个HttpRequest 都是独立thread, 所以可以在BeginRequest的时候bind, 在EndRequest 的时候Unbind, 这样就是可以使用getCurrentSession(), 例如:6 @% Q+ a$ c5 o3 X/ w7 e
context.BeginRequest += OpenSession;( t7 `/ C/ Z9 B  ?
.Bind(HttpContext.Current, SessionFactory.OpenSession())
' Y- D  @( c/ D  w2 b
( s- D* T; C$ F  M8 q//do transaction
9 V# o) F$ W: tgetCurrentSession().Submit();
: U+ Z( u3 X' YgetCurrentSession().RollBack();' ^' H5 _0 c% B5 `" s1 e( w! h
...
' o: s5 X+ L6 o) ~( h# a: L5 uUnbind(HttpContext.Current, SessionFactory)
. }% \& M0 a) d" j; K8 I4 }* N, O7 ?" q6 f& C% z) ^3 o0 W5 r
context.EndRequest += CloseSession;
+ D" C+ v6 a7 h6 C$ q" o* K" Z+ |3 z, v" d# @) Z! f1 ?
如果配置不对,getCurrentSession() 会出错。但是不会引起application 不稳定,查查别的地方吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT-7, 2026-3-28 23:45 , Processed in 0.094594 second(s), 14 queries , Gzip On, APC On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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