埃德蒙顿华人社区-Edmonton China

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

寻找NHibernate高手

[复制链接]
鲜花(123) 鸡蛋(0)
发表于 2011-7-14 16:47 | 显示全部楼层 |阅读模式
老杨团队,追求完美;客户至上,服务到位!
能否说说以下三个设置的异同啊?" _2 N! n% y; |% W

( c7 R1 q' L( }2 D2 W8 y谢谢
3 J9 H# Y' _. F) I/ X" J+ f' k% W& s0 I8 u
<property name="current_session_context_class">web</property>. m, o7 i( p0 ^+ N5 Z) V0 s9 ^% {
<property name="current_session_context_class">call</property>0 k1 V$ q  @2 u& `0 h# M
<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 编辑
/ \2 j5 b7 }4 e! b( W( d( S" L* M( u
Please refer to http://docs.jboss.org/hibernate/ ... rnate_reference.pdf
: X+ ^8 V2 L7 j  h5 b) [( Z5 T' P! {/ G* g; P* E% r9 N
+ F+ X* i0 x+ K3 o  ]
Chapter 2.5 Contextual Sessions
鲜花(123) 鸡蛋(0)
 楼主| 发表于 2011-7-14 22:31 | 显示全部楼层
老杨团队 追求完美
Please refer to http://docs.jboss.org/hibernate/ ... rnate_reference.pdf
2 i/ Z: T( t9 `7 a4 O( p
6 E; J( D5 U/ A. e/ |
$ Z  G6 K2 ~) S; }; OChapter 2.5 Contextual Sessions
" I4 K/ B+ X4 _4 `/ zgamahu 发表于 2011-7-14 21:56

) |: b" S- Q3 Q8 P: y5 a+ Q
2 n; @( H) g' `) O谢谢啊,看了,但还是很模糊. 其实我已经看过不少关于这个问题的文章或书里的章节, 还是没有得出明确的答案, 他们之间的 界定和 差异不是太大.% I9 w1 [0 ]0 |9 V
; g  r! z6 Y2 C6 z
现在还多了个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
( ^- I& C0 g; S; t5 T基本参数:, _5 T% Y$ Z+ J
jta | thread | managed | custom.Class8 g8 M/ d) p: b) g+ r
主要是配合& \" Y, E4 ~0 M! y
SessionFactory.getCurrentSession(): P# k8 s  n4 N  [; ^  j
来用的.
  g( h: _( F5 S; T& P; U* u6 K6 MThread 指自动绑定到当前进程,managed 是在有些managed environment 如果使用 container-managed transactions (CMT) , 需要自己bind 和 unbind,这样 getCurrentSession() 才可能返回正确,
* P8 G" M+ D( Q1 n8 U3 nWeb application 状况下,每一个HttpRequest 都是独立thread, 所以可以在BeginRequest的时候bind, 在EndRequest 的时候Unbind, 这样就是可以使用getCurrentSession(), 例如:7 p( p7 D2 D6 j; K. ~
context.BeginRequest += OpenSession;+ s& L0 o) l& Y; V) J
.Bind(HttpContext.Current, SessionFactory.OpenSession())
2 Q' [# f+ |$ _3 B& {) O' O$ g2 w
//do transaction$ `( z7 i$ W+ G; H0 y7 ~6 Y. Q8 R4 B- L
getCurrentSession().Submit();
) X* v2 E, I2 F3 }& R! l8 K) lgetCurrentSession().RollBack();; e, f- o3 D1 }$ L5 d
...5 [+ Z7 v7 y& x/ u# x
Unbind(HttpContext.Current, SessionFactory)6 Y6 I7 P' o5 t. J/ v8 X
+ m+ N0 N. b! b7 t+ a' p  q9 y3 a
context.EndRequest += CloseSession;& c; ?4 ~; f1 T+ I

& v. H# Q" s0 B% J" o 如果配置不对,getCurrentSession() 会出错。但是不会引起application 不稳定,查查别的地方吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT-7, 2026-4-15 12:28 , Processed in 0.069986 second(s), 15 queries , Gzip On, APC On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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