歡迎來到小米的博客
希望能和您交流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
小米
閱讀(3938)
評論(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技術中文社區
拯救程序員王俊
搜索
積分與排名
積分 - 233081
排名 - 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定時執行任務(33741)
2.?用JFreeChart畫柱狀圖的范例(10689)
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 小米
主站蜘蛛池模板:
伊人久久精品亚洲午夜
|
国产乱子影视频上线免费观看
|
亚洲色偷偷偷鲁综合
|
9久热这里只有精品免费
|
亚洲自偷自偷图片
|
最新国产乱人伦偷精品免费网站
|
两个人日本WWW免费版
|
亚洲无码高清在线观看
|
久久久久久噜噜精品免费直播
|
亚洲AV无码专区日韩
|
巨胸喷奶水www永久免费
|
亚洲色大成网站WWW久久九九
|
一个人免费观看www视频
|
久久亚洲国产精品五月天婷
|
国产三级在线免费观看
|
亚洲av色福利天堂
|
很黄很黄的网站免费的
|
tom影院亚洲国产一区二区
|
成人免费777777
|
一级毛片大全免费播放下载
|
亚洲中文字幕无码一区二区三区
|
日韩精品无码免费一区二区三区
|
久久青青草原亚洲av无码app
|
青青青免费国产在线视频小草
|
亚洲日韩久久综合中文字幕
|
一区国严二区亚洲三区
|
中文字幕免费在线播放
|
亚洲午夜电影在线观看
|
国产精品成人四虎免费视频
|
中文在线日本免费永久18近
|
亚洲欧洲日韩国产
|
免费人成视频在线观看不卡
|
两个人看的www高清免费观看
|
亚洲国产综合精品
|
亚洲成AⅤ人影院在线观看
|
一区二区三区观看免费中文视频在线播放
|
亚洲国产夜色在线观看
|
亚洲国产av一区二区三区
|
一区二区免费视频
|
麻豆一区二区三区蜜桃免费
|
亚洲精品视频在线
|