歡迎來到小米的博客
希望能和您交流Java編程的知識和見解
BlogJava
首頁
新隨筆
聯系
聚合
管理
隨筆-57 評論-202 文章-17 trackbacks-0
《深入淺出Hibernate》讀書筆記(9)——Session管理
這一節是非常實用的一節,我在閱讀此書的時候,一直在迷惑,究竟應該怎樣管理Session呢?因為Session的管理是如此重要,類似于以前寫程序對JDBC Connection的管理。看完此節后,終于找到了方法。
在各種Session管理方案中,ThreadLocal模式得到了大量使用。ThreadLocal是Java中一種較為特殊的線程綁定機制。通過ThreadLocal存取的數據,總是與當前線程相關,也就是說,JVM為每個運行的線程,綁定了私有的本定實例存取空間,從而為多線程環境經常出現的并發訪問問題提供了一種隔離機制。
下面是Hibernate官方提供的一個ThreadLocal工具:
import net.sf.hibernate.
*
;
import net.sf.hibernate.cfg.
*
;
import org.apache.log4j.Logger;
/**/
/*
*
* <p>Title: </p>
*
* <p>Description: Session的管理類</p>
*
* <p>Copyright: Copyright (c) 2005</p>
*
* <p>Company: </p>
*
* @author George Hill
* @version 1.0
*/
public
class
HibernateUtil
{
private
static
final Logger log
=
Logger.getLogger(HibernateUtil.
class
);
private
static
final SessionFactory sessionFactory;
/**/
/*
*
* 初始化Hibernate配置
*/
static
{
try
{
//
Create the SessionFactory
sessionFactory
=
new
Configuration().configure().buildSessionFactory();
}
catch
(Throwable ex)
{
log.error(
"
Initial SessionFactory creation failed.
"
, ex);
throw
new
ExceptionInInitializerError(ex);
}
}
public
static
final ThreadLocal session
=
new
ThreadLocal();
/**/
/*
*
* 根據當前線程獲取相應的Session
* @return Session
* @throws HibernateException
*/
public
static
Session currentSession() throws HibernateException
{
Session s
=
(Session) session.
get
();
//
Open a new Session, if this Thread has none yet
if
(s
==
null
)
{
s
=
sessionFactory.openSession();
session.
set
(s);
}
return
s;
}
/**/
/*
*
* 返回Session給相應的線程
* @throws HibernateException
*/
public
static
void
closeSession() throws HibernateException
{
Session s
=
(Session) session.
get
();
session.
set
(
null
);
if
(s
!=
null
)
s.close();
}
}
針對WEB程序,還可以利用Servlet2.3的Filter機制,輕松實現線程生命周期內的Session管理。下面是一個通過Filter進行Session管理的典型案例:
public
class
PersistenceFilter implements Filter
{
protected
static
ThreadLocal hibernateHolder
=
new
ThreadLocal();
public
void
doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException
{
hibernateHolder.
set
(getSession());
try
{
chain.doFilter(request, response);
}
finally
{
Session session
=
(Session) hibernateHolder.
get
();
if
(session
!=
null
)
{
hibernateHolder.
set
(
null
);
try
{
session.close();
}
catch
(HibernateException ex)
{
throw
new
ServletException(ex);
}
}
}
}
}
posted on 2005-07-29 19:43
小米
閱讀(3939)
評論(1)
編輯
收藏
所屬分類:
Hibernate
評論:
#
re: 《深入淺出Hibernate》讀書筆記(9)——Session管理
2005-11-06 15:07 |
jiniboy
這都是你總結的嗎
回復
更多評論
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關文章:
《深入淺出Hibernate》讀書筆記(9)——Session管理
《深入淺出Hibernate》讀書筆記(8)——Hibernate分頁
《深入淺出Hibernate》讀書筆記(7)——回調與攔截機制
《深入淺出Hibernate》讀書筆記(6)——集合類型和結果集排序
《深入淺出Hibernate》讀書筆記(5)——持久層操作
《深入淺出Hibernate》讀書筆記(4)——事務管理
《深入淺出Hibernate》讀書筆記(3)——數據緩存
《深入淺出Hibernate》讀書筆記(2)——實體對象識別
《深入淺出Hibernate》讀書筆記(1)——實體對象生命周期
用HQL獲取部分的實體對象屬性
小米,生活在深圳,專注于Java,主要從事數據庫和網頁編程。現在在學習著Hibernate和Spring。喜歡游戲、音樂和臺球。聯系方式:georgehill@21cn.com
<
2005年7月
>
日
一
二
三
四
五
六
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
留言簿
(27)
給我留言
查看公開留言
查看私人留言
隨筆分類
Hibernate(15)
Java(17)
Spring(1)
Struts(5)
其它(5)
數據庫(2)
生活隨筆(12)
隨筆檔案
2006年4月 (1)
2006年3月 (1)
2005年8月 (1)
2005年7月 (11)
2005年6月 (13)
2005年5月 (30)
文章分類
Eclipse(1)
Java(8)
其它(8)
文章檔案
2005年7月 (1)
2005年6月 (13)
2005年5月 (3)
我的朋友們
emu的博客
Java BY
我的鏈接
Java Research
SUN Java技術中文社區
拯救程序員王俊
搜索
積分與排名
積分 - 233114
排名 - 247
最新評論
1.?re: Hibernate的一對一關聯實例
根據寫了報錯了是怎么回事
--33
2.?re: 用java.util.Timer定時執行任務
評論內容較長,點擊標題查看
--yunp
3.?re: Hibernate的一對一關聯實例
好樣的
--vds
4.?re: 如何在Struts中實現分頁顯示數據(1)
PageData中的集合是所有都取出,還是用多少取多少,若是前者,會拖慢系統的。
--李亞男
5.?re: BMP文件格式
評論內容較長,點擊標題查看
--見面
閱讀排行榜
1.?用java.util.Timer定時執行任務(33742)
2.?用JFreeChart畫柱狀圖的范例(10691)
3.?《深入淺出Hibernate》讀書筆記(3)——數據緩存(6107)
4.?《深入淺出Hibernate》讀書筆記(8)——Hibernate分頁(5554)
5.?用ChartDirector在JSP中畫統計圖(5246)
評論排行榜
1.?如何在Struts中實現分頁顯示數據(2)(25)
2.?獻出一份愛心 共同援助重病程序員王俊(22)
3.?Struts的國際化完整解決方案(11)
4.?2005年6月27日,一個值得紀念的日子(9)
5.?《深入淺出Hibernate》讀書筆記(1)——實體對象生命周期(9)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 小米
主站蜘蛛池模板:
亚洲国产精品无码第一区二区三区
|
亚洲人成影院在线高清
|
国产成人免费网站
|
jizz在线免费播放
|
亚洲精品在线不卡
|
四虎亚洲国产成人久久精品
|
无码日韩精品一区二区免费暖暖
|
免费国产在线视频
|
亚洲国产精品网站在线播放
|
亚洲精品无码鲁网中文电影
|
黄页网站免费在线观看
|
一个人晚上在线观看的免费视频
|
久久综合亚洲色HEZYO社区
|
国产中文字幕免费
|
久热中文字幕在线精品免费
|
黄色一级视频免费
|
亚洲国产精品综合久久20
|
亚洲色中文字幕无码AV
|
在线a人片天堂免费观看高清
|
精品国产污污免费网站
|
国产成人亚洲午夜电影
|
91情国产l精品国产亚洲区
|
免费看国产曰批40分钟
|
亚洲毛片免费视频
|
两个人看的www免费
|
亚洲1区2区3区精华液
|
久久综合亚洲色HEZYO社区
|
亚洲天堂中文字幕在线观看
|
亚洲日本一区二区一本一道
|
久久综合AV免费观看
|
国产一精品一av一免费爽爽
|
国产免费牲交视频
|
97在线观看永久免费视频
|
a毛片免费播放全部完整
|
免费福利资源站在线视频
|
久久精品国产99国产精品亚洲
|
亚洲国产精品无码久久一线
|
亚洲国产成人久久综合一区77
|
亚洲人成高清在线播放
|
久久精品国产精品亚洲毛片
|
亚洲精品成人片在线观看精品字幕
|