歡迎來到小米的博客
希望能和您交流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 小米
主站蜘蛛池模板:
亚洲综合最新无码专区
|
成人性生交视频免费观看
|
69影院毛片免费观看视频在线
|
在线观看免费视频资源
|
无码乱肉视频免费大全合集
|
日韩人妻无码免费视频一区二区三区
|
国产精品美女免费视频观看
|
免费在线观看一级片
|
和日本免费不卡在线v
|
国产资源免费观看
|
亚洲精品无码久久久久去q
|
亚洲美女免费视频
|
亚洲国产成人久久一区二区三区
|
一区二区三区精品高清视频免费在线播放
|
67194国产精品免费观看
|
精品国产免费一区二区
|
中文字幕亚洲一区
|
亚洲人成网站在线观看播放动漫
|
国内成人精品亚洲日本语音
|
国产成人AV免费观看
|
AV大片在线无码永久免费
|
又粗又大又猛又爽免费视频
|
亚洲爆乳精品无码一区二区三区
|
wwwxxx亚洲
|
精品国产免费人成网站
|
青青视频观看免费99
|
亚洲综合色视频在线观看
|
亚洲一区二区三区不卡在线播放
|
牛牛在线精品免费视频观看
|
9420免费高清在线视频
|
国产亚洲福利一区二区免费看
|
亚洲国产精品国自产电影
|
久久亚洲AV成人无码国产电影
|
国产精品99久久免费观看
|
国产精品深夜福利免费观看
|
久久久国产精品亚洲一区
|
男男gay做爽爽免费视频
|
在线观看永久免费
|
亚洲色大成网站WWW久久九九
|
亚洲欧美成人av在线观看
|
久久午夜无码免费
|