埃德蒙顿华人社区-Edmonton China

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

寻找NHibernate高手

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

3 A5 ]7 G. K* _6 e$ F/ p8 l1 A0 T( Y& B谢谢
9 X4 {* n! P  C, n- f3 z; f  w1 U4 C5 g8 k
<property name="current_session_context_class">web</property>
8 j9 y7 _- a& m7 s5 C) U7 s' j<property name="current_session_context_class">call</property>7 i* d6 G* R6 E/ z
<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 J" G' H

5 x/ j/ [. u/ t5 B7 A4 tPlease refer to http://docs.jboss.org/hibernate/ ... rnate_reference.pdf) i/ v0 }7 [+ D3 H1 p6 K
+ h# Z, s( B8 y+ C% `
. \, v1 M" ]6 J7 c
Chapter 2.5 Contextual Sessions
鲜花(123) 鸡蛋(0)
 楼主| 发表于 2011-7-14 22:31 | 显示全部楼层
老杨团队 追求完美
Please refer to http://docs.jboss.org/hibernate/ ... rnate_reference.pdf
& e8 Z) D9 s2 [  }9 k4 M. H
- o/ c& |5 h% c% R
- D1 g6 i% ]6 nChapter 2.5 Contextual Sessions8 I( h, h+ D) z; i; ^
gamahu 发表于 2011-7-14 21:56
5 N, q& \% w. K) a" O3 B& [
* E" f# c; [- m; t
谢谢啊,看了,但还是很模糊. 其实我已经看过不少关于这个问题的文章或书里的章节, 还是没有得出明确的答案, 他们之间的 界定和 差异不是太大.
5 j. E9 Y# |4 ?  P  O' S+ \
- _% K, j; N8 I* 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+ e6 w+ X/ F8 ]! y/ O5 D
基本参数:% E7 F1 j; N& M
jta | thread | managed | custom.Class
! }; w4 o* ^- p9 K0 ]主要是配合
  [  G: q% ~0 e; s+ n! i9 ^  kSessionFactory.getCurrentSession()
% t# y7 l7 {. G' _来用的.7 v0 S; H* V8 y) s6 F/ T" {
Thread 指自动绑定到当前进程,managed 是在有些managed environment 如果使用 container-managed transactions (CMT) , 需要自己bind 和 unbind,这样 getCurrentSession() 才可能返回正确,1 ~' M) C( Y; M
Web application 状况下,每一个HttpRequest 都是独立thread, 所以可以在BeginRequest的时候bind, 在EndRequest 的时候Unbind, 这样就是可以使用getCurrentSession(), 例如:* }+ ]# c- `% m
context.BeginRequest += OpenSession;
+ R9 n9 r6 H/ }6 @+ c6 x- p1 y.Bind(HttpContext.Current, SessionFactory.OpenSession())
: u) \8 e4 _/ A& E" z+ M
; a2 N/ W1 [) [8 U' y' H//do transaction
$ w' S# z$ J8 U/ P# `- t. r* K* YgetCurrentSession().Submit();
6 R* @* y5 x+ D; o0 Y: VgetCurrentSession().RollBack();6 [6 s/ n. T3 {% {- x$ B
...8 Q5 o% o1 J2 U# N, f
Unbind(HttpContext.Current, SessionFactory)
" D4 l0 j, T# [  _9 z( l) @6 E: g: ^' `, T6 G' a' k8 \
context.EndRequest += CloseSession;8 Z7 m6 \( \1 U' b& g7 |
6 {8 m; X" S% ]# b
如果配置不对,getCurrentSession() 会出错。但是不会引起application 不稳定,查查别的地方吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT-7, 2025-11-30 12:24 , Processed in 0.126450 second(s), 14 queries , Gzip On, APC On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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