1. 程式人生 > >Hibernate學習筆記之Session管理

Hibernate學習筆記之Session管理

Session之於Hibernate,有如Connection之於JDBC,如果有效的管理Session,從而避免不必要的效能開支。

由於Session是非執行緒安全的,因此在對Session進行重用的時候應該杜絕多執行緒共享一個Session。因此對Session的管理應該遵循“線上程內共享”的原則。

通過ThreadLocal實現Session管理是比較常用的一種方式,ThreadLocal可以確保獲得與當前執行緒繫結的Session例項,具體程式碼如下所示:

	private static Configuration conf=new Configuration().configure();
	private static SessionFactory sessionFactory=conf.buildSessionFactory();
	public static final ThreadLocal<Session> threadLocal=new ThreadLocal<Session>();
	public static SessionFactory getSessionFactory(){
		return sessionFactory;
	}
	
	public static Session getCurrentSession(){
		Session session=threadLocal.get();
		if(session==null){
			session=sessionFactory.openSession();
			threadLocal.set(session);
		}
		return session;
	}
	
	public static void closeSession(){
		Session session=threadLocal.get();
		threadLocal.set(null);
		if(session!=null){
			session.close();
		}
	}


相關推薦

Hibernate學習筆記Session管理

Session之於Hibernate,有如Connection之於JDBC,如果有效的管理Session,從而避免不必要的效能開支。 由於Session是非執行緒安全的,因此在對Session進行重用的時候應該杜絕多執行緒共享一個Session。因此對Session的管理應

Linux學習筆記賬號管理

去掉 linux 根據 每一個 roo 輸入密碼 人員 緩沖 table 一、用戶與組賬號 用戶賬號:包括實際人員和邏輯性對象(如應用程序執行特定工作的賬號),每一個用戶賬號包含一個唯一的用戶 ID 和組 ID,標準用戶是系統安裝過程中自動創建的用戶賬號,除 root 是

spring系統學習--spirngMVCsession管理

   繼續把spirngmvc的關於session管理的筆記記一下。 第一步:  新建相關處理邏輯的控制器: package com.automannn.springMVC_practice.controller; import org.springframe

Airtest學習筆記裝置管理

> 通過本篇你講了解到Airtest是如何跟安卓裝置互動的,以及多裝置時的多機互動使用。 在之前從Touch介面分析Airtest的影象識別中,在影象識別獲取到目標位置以後,發起點選的操作是通過以下這句: `G.DEVICE.touch(pos, **kwargs)

linux學習筆記系統管理操作

1.檢視網路IP和閘道器 檢視虛擬網路編輯器 在VMware裡 選擇 編輯->虛擬網路編輯器 修改ip地址 在虛擬編輯器裡面選擇NAT模式,然後配置子網ip, 如果不知道本機ip ,可以在window命令列中輸入ipconfig 檢視當前ip地址

saltstack學習筆記crond管理

        關於crontab,都知道是linux運維必不可少的操作。cron的有多種配置方式,比如,crontab -e或者寫到/etc/cron.*(hourly,daily等等).那麼通過saltsatck如何管理minion的crontab呢。          

Hibernate學習筆記Session清空快取與清理快取

1. 清空快取     當呼叫session.evict(customer); 或者session.clear(); 或者session.close()方法時,Session的快取被清空。 2. 清理快取     Session具有一個快取,位於快取中的物件處於持久化狀態

Hibernate 學習筆記 多對多關係 及其 級聯操作

一、多對多配置 User.java /** * Created by Donald on 2016/11/20. */ public class User { priva

Hibernate 學習筆記 一對多關係 及其 級聯操作

一、一對多關係 Customer.java /** * Created by Donald on 2016/11/19. */ public class Customer {

JavaWeb學習入門——圖書館管理系統開發(Hibernate學習1)

pass ica void 技術分享 gets 學習 images 創建 driver 最近看了看JavaWeb的書籍,才感覺到大二時候學的JavaWeb才僅僅只是個入門。最尷尬的當初還沒咋學一直在看.NET,現在看起來JavaWeb,各種框架各種頭疼啊。看了幾個例子之後覺

MongoDB 學習筆記 權限管理基礎

顯示 命令 修改 技術 sky 需要 bad 官方 改密碼 權限管理基礎 MongoDB有很多用戶roles,這裏只是簡單列舉下命令的使用,具體的role的含義,請查閱官方文檔。 https://docs.mongodb.com/manual/reference/bui

二LWIP學習筆記網絡接口管理

line nts span 基於 網絡接口 blog 內部 定義 1.5 一、引言   LWIP分為四個層次:鏈路層、網絡層、傳輸層和應用層。運行LWIP的嵌入式設備可以有多個網絡接口:以太網接口、串行鏈路接口、環回接口等。為了實現對所有網絡接口的有效管理,協議棧內部使用了

項目管理學習筆記四.風險管理

src analysis 方式 出現 ati 表示 statistic 1.2 esp 項目管理個人能力--風險管理 下圖是一個風險管理的示意表格

Hibernate學習筆記註解

date out 語句 數據庫 sca 進制 sum default tab 1、@Entiy 實體類註解 2、@Table 映射表 (name=“”)表名 3、@Coulmn @Column( name

Linux學習筆記進程管理

crontab 重要 執行者 變量 user 概念 進程管理 ont 任務 一、進程基礎 當輸入一個命令時,shell會同時啟動一個進程,這種任務與進程分離的方式是 Linux 系統上重要的概念,而每個執行的任務都稱為進程,在每個進程啟動時,系統都會給它指定一個唯一的ID

Linux學習筆記1——文件和目錄管理(硬連接和軟連接)(連結檔,相當於快捷方式)

class 學習linux lock 訪問 接下來 所有 sdn ext test 在這節將要學習linux的連接檔,在之前用"ls -l" 查看文件屬性的命令時, 其中第二個屬性是連接數。那麽這個連接數是幹什麽的?這就要理解inode。 先說一下文件是怎麽存儲的。

Linux學習筆記1——檔案和目錄管理(硬連線和軟連線)(連結檔,相當於快捷方式)

在這節將要學習linux的連線檔,在之前用"ls -l" 檢視檔案屬性的命令時, 其中第二個屬性是連線數。那麼這個連線數是幹什麼的?這就要理解inode。     先說一下檔案是怎麼儲存的。檔案儲存在硬碟上,硬碟的最小儲存單位叫做"扇區"(Sector),每個扇區儲存512位元

Linux學習筆記mysql的管理

資料庫型別:mysql oracle dbyum install mariadb-server -y 下載systemctl start mariadb 啟動 netstat -antlpe | grep mysqld ##檢視網路埠 vim /etc/my.cnf (為了安全,須關閉網路埠)######

大資料技術學習筆記linux基礎3-軟體管理與shell指令碼開發

一、Linux軟體管理     -》壓縮檔案管理         -》常見壓縮格式             -

大資料技術學習筆記linux基礎2-基礎環境與系統管理

  一、Linux使用者及許可權管理     -》使用者管理         -》Linux使用者的配置檔案:/etc/passwd      &nb