埃德蒙顿华人社区-Edmonton China

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

寻找NHibernate高手

[复制链接]
鲜花(123) 鸡蛋(0)
发表于 2011-7-14 16:47 | 显示全部楼层 |阅读模式
老杨团队,追求完美;客户至上,服务到位!
能否说说以下三个设置的异同啊?& J$ v# N5 r' y0 a: {  B& _5 |1 n2 J

5 [9 _  |3 q  C, j; h谢谢" P- ]1 \# q! `

" }5 P' t5 f0 X<property name="current_session_context_class">web</property>
7 p+ u9 e, |/ F5 V/ x$ v0 {<property name="current_session_context_class">call</property>
0 n( B5 t6 w+ y<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 编辑 7 P! n& F; H9 s! R" B8 |
% q) B* A; R7 }4 I; U$ }
Please refer to http://docs.jboss.org/hibernate/ ... rnate_reference.pdf
3 n& C( D9 J( P% z% n0 x- E2 Y, F; n* w0 b5 C6 B
% G5 x. v. {  Y: U
Chapter 2.5 Contextual Sessions
鲜花(123) 鸡蛋(0)
 楼主| 发表于 2011-7-14 22:31 | 显示全部楼层
老杨团队 追求完美
Please refer to http://docs.jboss.org/hibernate/ ... rnate_reference.pdf
, h4 u/ |8 o4 n/ B) p' j$ h1 ~2 ]+ ?. h, H8 ?+ ^; v, q

( r% d* f9 W" YChapter 2.5 Contextual Sessions# s+ Z. W! K: V( j  t- k6 D
gamahu 发表于 2011-7-14 21:56

6 N% N3 g* [8 I$ @$ ^' d
8 p5 L: d9 y+ ?3 l  o% }, |谢谢啊,看了,但还是很模糊. 其实我已经看过不少关于这个问题的文章或书里的章节, 还是没有得出明确的答案, 他们之间的 界定和 差异不是太大./ {& {+ k. c1 d* r
; @% S4 C- U8 i" B+ G
现在还多了个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
; u# ^" n1 n* [- k6 T) {基本参数:
/ u' v: _4 C8 w4 a; {5 sjta | thread | managed | custom.Class
8 ]/ V4 e9 Y# Q8 C" J5 E主要是配合
1 S0 `% t4 \  |% i! B# PSessionFactory.getCurrentSession()
% Y' n' A5 H( i3 t来用的.
7 K$ Y( i3 `6 W: c3 }Thread 指自动绑定到当前进程,managed 是在有些managed environment 如果使用 container-managed transactions (CMT) , 需要自己bind 和 unbind,这样 getCurrentSession() 才可能返回正确,* |. o1 s3 q) o8 r$ @+ T1 l: z/ [
Web application 状况下,每一个HttpRequest 都是独立thread, 所以可以在BeginRequest的时候bind, 在EndRequest 的时候Unbind, 这样就是可以使用getCurrentSession(), 例如:9 `! H) ?3 B6 x4 ]% Z
context.BeginRequest += OpenSession;1 j5 V5 l  z) r' U4 K$ R$ ~
.Bind(HttpContext.Current, SessionFactory.OpenSession())
$ ?" m: S. J: `( g% Y. F7 [9 p. n& W9 T  I2 H0 p
//do transaction! ~: c, m9 `6 G
getCurrentSession().Submit();
  @7 Y: ]) v3 ?: N% a: i; dgetCurrentSession().RollBack();
+ L4 }' d8 g) m7 D...- z# ?) U* ^: Z; O9 w! T) E
Unbind(HttpContext.Current, SessionFactory)
8 x* h, k& k+ c4 s" {5 z. p: O1 l! j1 ^9 n5 ]
context.EndRequest += CloseSession;8 _; f- F" Z& E" i) y: p
& q' ]( o7 h" T, e4 j, u& f; q
如果配置不对,getCurrentSession() 会出错。但是不会引起application 不稳定,查查别的地方吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT-7, 2026-3-28 10:49 , Processed in 0.151569 second(s), 13 queries , Gzip On, APC On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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