埃德蒙顿华人社区-Edmonton China

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

寻找NHibernate高手

[复制链接]
鲜花(123) 鸡蛋(0)
发表于 2011-7-14 16:47 | 显示全部楼层 |阅读模式
老杨团队,追求完美;客户至上,服务到位!
能否说说以下三个设置的异同啊?
# t4 W* r1 R- ]7 H8 F9 u! @: O& I& `0 \) J
谢谢
3 e+ U" Y) ^% `8 {% G
/ ^& O' [" K2 e. [9 k<property name="current_session_context_class">web</property>; B+ R. x% r+ O" Q
<property name="current_session_context_class">call</property>
& n( w" {' \( G: t2 }<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 编辑 % s$ X; `( c% o7 x1 y/ B
. T8 H4 d2 o7 [
Please refer to http://docs.jboss.org/hibernate/ ... rnate_reference.pdf
- Y* j* b% B; W6 Y: E' E0 q0 O4 k& z

- M+ I) C" u- S  {. K8 T5 IChapter 2.5 Contextual Sessions
鲜花(123) 鸡蛋(0)
 楼主| 发表于 2011-7-14 22:31 | 显示全部楼层
老杨团队 追求完美
Please refer to http://docs.jboss.org/hibernate/ ... rnate_reference.pdf! @. T% ?  S5 d+ n; g3 n- h7 t3 m
2 Y" p" v# Z! L
; N+ W3 U0 A0 ?0 z3 D
Chapter 2.5 Contextual Sessions
) W1 x" K$ i+ \1 l" |2 i) Hgamahu 发表于 2011-7-14 21:56
" T# `2 ]' j! ]# s4 L
, U8 D; O! M5 j$ O( {
谢谢啊,看了,但还是很模糊. 其实我已经看过不少关于这个问题的文章或书里的章节, 还是没有得出明确的答案, 他们之间的 界定和 差异不是太大.
; x/ W; o( C0 w8 I
; C! X: e- ^% u! v, C现在还多了个manage_web,很想知道它和  web/thread_static的差别,也许它能  解决我们现在要解决的问题. 因为 web/thread_static都用过一段时间,   都偶尔有不稳定的  现象出现.
鲜花(2) 鸡蛋(0)
发表于 2011-7-15 09:55 | 显示全部楼层
current_session_context_class 主要是用来配置当前 data transaction session bind to what0 M) X. x& U2 G
基本参数:; b) G, Z7 }+ v; C, _0 W3 }6 @
jta | thread | managed | custom.Class
& g; O# x% Z5 ^  W7 \主要是配合# K4 L0 P1 g( X, w
SessionFactory.getCurrentSession()" Z& B# Y+ R4 `7 B3 x, Y- U
来用的.4 d8 h. U  Z9 M# w: x# q6 ^
Thread 指自动绑定到当前进程,managed 是在有些managed environment 如果使用 container-managed transactions (CMT) , 需要自己bind 和 unbind,这样 getCurrentSession() 才可能返回正确,
, @9 r' s) {2 H0 }4 R: rWeb application 状况下,每一个HttpRequest 都是独立thread, 所以可以在BeginRequest的时候bind, 在EndRequest 的时候Unbind, 这样就是可以使用getCurrentSession(), 例如:$ \6 s, A5 i9 p
context.BeginRequest += OpenSession;
+ Q1 d; p9 D7 Q8 B. y# {/ v( G.Bind(HttpContext.Current, SessionFactory.OpenSession())& v( s: b0 Q, Q8 \7 x
; y) [, |* h6 F# g
//do transaction
& M- a% @$ M. |1 n9 `" i! [getCurrentSession().Submit();
% T: L2 x7 m  Z% L% Y3 O9 \getCurrentSession().RollBack();
# i  M, t0 h7 `- x' M& z2 n...
# s" n+ U$ E6 H5 |: DUnbind(HttpContext.Current, SessionFactory)
& g, e, q' w9 ?6 K( v0 R
4 Z* m, L& e  c1 i( G# gcontext.EndRequest += CloseSession;
/ v  m! x. x' H8 M( D
% i5 V' t  o$ s- h 如果配置不对,getCurrentSession() 会出错。但是不会引起application 不稳定,查查别的地方吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT-7, 2025-12-9 11:59 , Processed in 0.139589 second(s), 13 queries , Gzip On, APC On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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