歡迎來到小米的博客
希望能和您交流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 小米
主站蜘蛛池模板:
国产精品免费看久久久
|
成人免费午夜视频
|
亚洲资源最新版在线观看
|
国产福利免费观看
|
国产午夜成人免费看片无遮挡
|
亚洲国产精品综合一区在线
|
亚洲av无码乱码在线观看野外
|
成年免费a级毛片免费看无码
|
亚洲国产一二三精品无码
|
亚洲成人在线免费观看
|
国产亚洲精品欧洲在线观看
|
婷婷亚洲久悠悠色悠在线播放
|
成年女人免费碰碰视频
|
国产自国产自愉自愉免费24区
|
亚洲成人激情小说
|
久久青草亚洲AV无码麻豆
|
在线免费一区二区
|
久操视频免费观看
|
国产天堂亚洲精品
|
亚洲成人午夜电影
|
亚洲精品无码乱码成人
|
高清国语自产拍免费视频国产
|
4虎永免费最新永久免费地址
|
美女被羞羞网站免费下载
|
亚洲精品在线电影
|
亚洲精品国产福利一二区
|
亚洲免费网站观看视频
|
黄网站免费在线观看
|
猫咪免费人成在线网站
|
国产精品亚洲综合久久
|
亚洲综合在线成人一区
|
亚洲色偷偷综合亚洲AVYP
|
免费一级大黄特色大片
|
成人男女网18免费视频
|
99re在线精品视频免费
|
中文精品人人永久免费
|
欧洲精品码一区二区三区免费看
|
亚洲综合国产成人丁香五月激情
|
亚洲欧洲中文日产
|
亚洲第一视频网站
|
亚洲春色在线视频
|