埃德蒙顿华人社区-Edmonton China

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

寻找NHibernate高手

[复制链接]
鲜花(123) 鸡蛋(0)
发表于 2011-7-14 16:47 | 显示全部楼层 |阅读模式
老杨团队,追求完美;客户至上,服务到位!
能否说说以下三个设置的异同啊?
$ V4 y( n/ G, m8 P$ E: s
8 e: I; m8 X2 w4 c- W谢谢- C; [% n2 c" \% d% p  J
% p0 j, o  p5 x1 J, S# y% _
<property name="current_session_context_class">web</property>* j/ H9 W% q% A7 X# z, m' t
<property name="current_session_context_class">call</property>
- D! x. A) W+ m: t<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 编辑
- @1 o' `8 D0 f2 |6 ~
' l5 Y8 c4 q' b) c' iPlease refer to http://docs.jboss.org/hibernate/ ... rnate_reference.pdf
/ L$ p: F2 R+ n  }) G! t  N/ d$ f
% N8 `8 Q# w; y$ u5 w" h$ I& N" n
Chapter 2.5 Contextual Sessions
鲜花(123) 鸡蛋(0)
 楼主| 发表于 2011-7-14 22:31 | 显示全部楼层
老杨团队 追求完美
Please refer to http://docs.jboss.org/hibernate/ ... rnate_reference.pdf
9 V+ b$ d& Z$ }# s. K3 F  I! d' D
0 m" X% k+ r: Q& l! K- u
  b/ {; l& f1 E& W: UChapter 2.5 Contextual Sessions
4 }5 i8 I9 R7 n# Rgamahu 发表于 2011-7-14 21:56

: p! o9 Y; z3 v# [* y
6 V' n7 D- z$ M+ L9 U! O5 Z7 b  ~谢谢啊,看了,但还是很模糊. 其实我已经看过不少关于这个问题的文章或书里的章节, 还是没有得出明确的答案, 他们之间的 界定和 差异不是太大.6 I  \( y: y7 Y

+ n' U  O1 v  j1 U; i- q# G8 v5 ?现在还多了个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
* y; s( L4 C9 F. \' M; R# [6 ^- `基本参数:' y; i: L% E. L/ G( {( H* o# e
jta | thread | managed | custom.Class7 H* Q# N, I- Z3 h
主要是配合
; U" z4 q1 L( F. w% i) @) VSessionFactory.getCurrentSession()5 i5 O. w  E8 ?& D" v
来用的.  z& Q1 J; z: A3 c* [. V! h
Thread 指自动绑定到当前进程,managed 是在有些managed environment 如果使用 container-managed transactions (CMT) , 需要自己bind 和 unbind,这样 getCurrentSession() 才可能返回正确,
$ N, G7 C$ ]- ^- NWeb application 状况下,每一个HttpRequest 都是独立thread, 所以可以在BeginRequest的时候bind, 在EndRequest 的时候Unbind, 这样就是可以使用getCurrentSession(), 例如:
4 X+ ]7 t# \" y: k+ `; Jcontext.BeginRequest += OpenSession;
" n3 G( G* B& T# D* ?+ F.Bind(HttpContext.Current, SessionFactory.OpenSession())3 V; h$ M4 B+ O

5 X0 I2 j5 z1 ?$ ~- g5 \9 h//do transaction' D' N- o+ s3 Y. W8 |. J7 f( K
getCurrentSession().Submit();
3 ~$ E% m: e$ _& ~. w" sgetCurrentSession().RollBack();
/ B: c5 e* z9 ]0 T...0 H! }( C$ V2 R3 A6 K& |
Unbind(HttpContext.Current, SessionFactory)
* q7 s8 I7 I) ?6 t
9 a+ Z8 e( _6 N% m. w3 pcontext.EndRequest += CloseSession;
* S  P# h3 V$ `8 S  A2 D0 m
* \( p  g4 J% S) V7 P 如果配置不对,getCurrentSession() 会出错。但是不会引起application 不稳定,查查别的地方吧。
大型搬家
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT-7, 2025-12-20 12:25 , Processed in 0.115977 second(s), 13 queries , Gzip On, APC On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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