埃德蒙顿华人社区-Edmonton China

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

寻找NHibernate高手

[复制链接]
鲜花(123) 鸡蛋(0)
发表于 2011-7-14 16:47 | 显示全部楼层 |阅读模式
老杨团队,追求完美;客户至上,服务到位!
能否说说以下三个设置的异同啊?
: [- s2 Q5 g% C" G0 O
" M" u4 r+ U3 S: J谢谢& D4 C* v, M6 X3 }

; u7 t4 Y( u: o; U- k<property name="current_session_context_class">web</property>
  L$ G( Y- N- `) W4 u3 A<property name="current_session_context_class">call</property>" D" @% b; B" V8 n/ S
<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 编辑
" L0 [2 A- O8 q6 E' R
& A8 x4 G3 O# H$ ~4 bPlease refer to http://docs.jboss.org/hibernate/ ... rnate_reference.pdf! K; I% V4 Z" Z; N9 K3 m9 j" E
0 i$ y; R9 P1 M
! r7 v9 \$ V* G# M9 P) K% o
Chapter 2.5 Contextual Sessions
鲜花(123) 鸡蛋(0)
 楼主| 发表于 2011-7-14 22:31 | 显示全部楼层
老杨团队 追求完美
Please refer to http://docs.jboss.org/hibernate/ ... rnate_reference.pdf
. T  V/ Z6 J+ T/ X( J4 r7 l* a1 j- M' X8 w9 V# n
2 M) x) v+ Q, H) n6 [, k! S8 g
Chapter 2.5 Contextual Sessions- N& m4 b$ h1 g; J" Z1 H
gamahu 发表于 2011-7-14 21:56
. x% [) T& T% \

; d9 L) Y( ~. |0 n8 n谢谢啊,看了,但还是很模糊. 其实我已经看过不少关于这个问题的文章或书里的章节, 还是没有得出明确的答案, 他们之间的 界定和 差异不是太大.
% T- z  g7 N# F$ J. Q' D2 T
% |( `6 L0 d; r' j& G7 J  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) X+ B5 \! j" J) M, J4 ]$ `
基本参数:0 `9 P5 n: t: V; G
jta | thread | managed | custom.Class
# f6 e# `4 J9 X, v6 \主要是配合
# A: L4 z' j% j' q. G9 e7 GSessionFactory.getCurrentSession()
& }/ `2 I! S$ k5 W- J来用的.' j' A9 j1 s8 p+ q( }4 ]6 G' D2 D
Thread 指自动绑定到当前进程,managed 是在有些managed environment 如果使用 container-managed transactions (CMT) , 需要自己bind 和 unbind,这样 getCurrentSession() 才可能返回正确,5 @; T: k# e4 X
Web application 状况下,每一个HttpRequest 都是独立thread, 所以可以在BeginRequest的时候bind, 在EndRequest 的时候Unbind, 这样就是可以使用getCurrentSession(), 例如:2 t  q) f: N  ]+ ?1 }4 i
context.BeginRequest += OpenSession;
) q# K7 S) V% t/ q1 H.Bind(HttpContext.Current, SessionFactory.OpenSession())8 L% ^" Y; n# W" f) C3 s1 p

0 h  Y& \- n8 o+ x//do transaction2 B) I5 `. U) E  m& h. Z
getCurrentSession().Submit();. Q9 P- |2 u5 D& k3 ]# I5 c
getCurrentSession().RollBack();
7 H' Q9 r& I0 t1 {( `...
; f- W+ I. x/ i9 ]Unbind(HttpContext.Current, SessionFactory)
. J  M/ ?4 u4 f! t4 o) ~! z  j
6 t/ R9 v) M. o1 T! \context.EndRequest += CloseSession;
4 i2 @8 Q$ _1 K% }1 G6 Y. a
. g; D) `" v7 b+ ~8 b+ G 如果配置不对,getCurrentSession() 会出错。但是不会引起application 不稳定,查查别的地方吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT-7, 2026-4-21 06:05 , Processed in 0.122958 second(s), 15 queries , Gzip On, APC On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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