埃德蒙顿华人社区-Edmonton China

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

寻找NHibernate高手

[复制链接]
鲜花(123) 鸡蛋(0)
发表于 2011-7-14 16:47 | 显示全部楼层 |阅读模式
老杨团队,追求完美;客户至上,服务到位!
能否说说以下三个设置的异同啊?3 P. h4 ^9 V' w; ?& n0 T- t

8 Y2 ~- Q. u8 x. `! O# E" N" v4 H5 I谢谢9 u/ U% _8 e* f' m: X

+ A4 S4 a$ V: P1 `<property name="current_session_context_class">web</property>
2 j5 h+ j8 ]5 {2 @* Z<property name="current_session_context_class">call</property>" S+ H. E" {' x4 K+ C1 H
<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 编辑 ) G* j9 G- ~7 i: E4 ]

; Q0 t' X* A/ w# tPlease refer to http://docs.jboss.org/hibernate/ ... rnate_reference.pdf
/ [0 K  T% e3 K9 X8 c
' D5 i5 x/ n1 ^3 j# T1 z  L$ R1 N( y& P3 u& i4 F. c
Chapter 2.5 Contextual Sessions
鲜花(123) 鸡蛋(0)
 楼主| 发表于 2011-7-14 22:31 | 显示全部楼层
老杨团队 追求完美
Please refer to http://docs.jboss.org/hibernate/ ... rnate_reference.pdf
1 h( `8 J- M! j, h, _' X
& x* D6 o' t( @. E' l# _  H* _' j0 N/ T& r6 x
Chapter 2.5 Contextual Sessions
9 @" h2 N; P; Ugamahu 发表于 2011-7-14 21:56
. P. m8 T! B( N+ w4 U" Q
1 x1 \4 C5 s% ]3 ^7 V/ A1 h
谢谢啊,看了,但还是很模糊. 其实我已经看过不少关于这个问题的文章或书里的章节, 还是没有得出明确的答案, 他们之间的 界定和 差异不是太大.
% b+ V- U) w6 k# ~9 G; Q6 x, z1 y3 x; R
现在还多了个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
* c3 w& z. J& ~* d8 m1 J基本参数:
. D; W! Y7 F4 pjta | thread | managed | custom.Class; L! t. b; f/ m4 U
主要是配合
7 o2 w# r! h7 C  s3 fSessionFactory.getCurrentSession()2 n0 {  s: `/ M) H  L
来用的.0 _' e- D+ {+ j" M
Thread 指自动绑定到当前进程,managed 是在有些managed environment 如果使用 container-managed transactions (CMT) , 需要自己bind 和 unbind,这样 getCurrentSession() 才可能返回正确,
& e3 T! F3 V' s3 l0 y9 q* Y  NWeb application 状况下,每一个HttpRequest 都是独立thread, 所以可以在BeginRequest的时候bind, 在EndRequest 的时候Unbind, 这样就是可以使用getCurrentSession(), 例如:- a+ H5 R3 K& `0 E
context.BeginRequest += OpenSession;6 z2 T; ~% s/ X
.Bind(HttpContext.Current, SessionFactory.OpenSession())# q- E  P, q( R  y# C
3 b+ G9 }/ P% r) O$ S" B% G  j
//do transaction6 b/ `" }! b7 [+ \" X# \
getCurrentSession().Submit();+ [' W: c) E  f% p8 w" M
getCurrentSession().RollBack();4 u6 ~$ N; n5 `3 p8 x
...; O+ Q3 a7 E9 o
Unbind(HttpContext.Current, SessionFactory)
1 L& g5 O, a0 d5 N- R3 x* J% m5 i
0 \) ?. z7 e# |) i+ a- m# b4 x4 gcontext.EndRequest += CloseSession;
4 }: Z) |4 q, T6 {
9 Z6 U$ W) E1 z7 ?+ a 如果配置不对,getCurrentSession() 会出错。但是不会引起application 不稳定,查查别的地方吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT-7, 2026-10-8 05:22 , Processed in 0.239506 second(s), 13 queries , Gzip On, APC On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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