1. 程式人生 > >關於spring裡HibernateDaoSupport的關於session的獲取方法

關於spring裡HibernateDaoSupport的關於session的獲取方法

我在一個事務裡呼叫了兩次getCurrentSession,就是this.getHibernateTemplate().getSessionFactory().getCurrentSession(),卻打開了兩個session,事務提交後只關閉了一個。如果我換成HibernateDaoSupport提供的方法操作卻沒有這個問題,只打開1個session提交後正常關閉。請問這是怎麼回事?
我做了幾個測試

如果使用this.getSession()則session正常關閉,呼叫多次也沒問題。
如果使用this.getHibernateTemplate().getSessionFactory().getCurrentSession(),始終開啟1個session並且不能關閉。
如果使用this.getHibernateTemplate().getSessionFactory().getSession(),呼叫幾次開啟幾個session並且都不能關閉。

就是說,凡是通過this.getHibernateTemplate().getSessionFactory()獲得的session都不在事務管理內。

我的spring的sessionFactory配置是這樣的
	<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  		<property name="configLocation" value="classpath:hibernate.cfg.xml"/>
	</bean>

因為如果使用this.getSession()正常,所以事務配置應該是沒有問題的。
而且有一點,如果是通過this.getHibernateTemplate().getSessionFactory()獲得的session必須要beginTransaction,而this.getSession()則不用。

我在dao裡分別列印了兩種途徑獲得的session的.getTransaction().isActive(),
很顯然,getCurrentSession()的是false。

相關推薦

Spring 中 java 獲取方法引數名稱

一、介紹 在學習Spring ioc的時候,我們可以在Spring配置檔案中 對 物件構造器方法和例項方法按引數名稱進行注入,在我以前學習使用的時候,並沒有感覺有啥困難的,也一直以為java反射能夠獲取到方法的引數名稱, 但是在我簡單(spring ioc的

關於springHibernateDaoSupport的關於session的獲取方法

我在一個事務裡呼叫了兩次getCurrentSession,就是this.getHibernateTemplate().getSessionFactory().getCurrentSession(),卻打開了兩個session,事務提交後只關閉了一個。如果我換成Hibern

spring 根據beanName獲取bean物件,呼叫其方法

通用類 @Component public class SpringContextUtil implements ApplicationContextAware { private static ApplicationContext applicationConte

JS和JQ獲取標籤的內容方法總結

<select class="form-control" id="province" name="province"> <option value="1" >河南</option> <option value="2"

spring 獲取方法引數簽名

最近在用CXF restful ,cxf3 集成了Validation, 但hibernate validation返回的異常資訊裡不能準確的顯示出方法引數簽名,只能以arg0 arg1來表示引數,對於我們的外部api來說我只能說hibernate做的真爛,spring 在

JS和JQ中獲取標籤的內容方法總結

JQ獲得內容 - text()、html() 以及 val() 三個簡單實用的用於 DOM 操作的 jQuery 方法: text() - 設定或返回所選元素的文字內容 html() - 設定或返回所選元素的內容(包括 HTML 標記) val() - 設定或返回表單欄位的

Springmvc獲取session,session存取值得方法

session物件的獲取: 1:最簡單當形參注入 @RequestMapping("/main/login") public String userLogin(String yhdm,

Spring 中Controller 獲取請求參數的方法筆記

-type 接收 turn public str json href mod oca 1、直接把表單的參數寫在Controller相應的方法的形參中,適用於get方式提交,不適用於post方式提交。若"Content-Type"="application/x-www-f

為何Spring MVC可獲取方法引數名,而MyBatis卻不行?【享學Spring MVC】

每篇一句 胡適:多談些問題,少聊些主義 前言 Spring MVC和MyBatis作為當下最為流行的兩個框架,大家平時開發中都在用。如果你往深了一步去思考,你應該會有這樣的疑問: 在使用Spring MVC的時候,你即使不使用註解,只要引數名和請求引數的key對應上了,就能自動完成數值的封裝 在使用My

計算機網卡信息獲取方法

sco nic lin main ip配置 pro sin 掩碼 標識 using System; using System.Net.NetworkInformation; namespace DNSGet { class Program { st

Qt程序關於路徑、用戶目錄路徑、臨時文件夾位置獲取方法

lis 靜態函數 目錄下的文件 兩個 top 存儲 class ber ron   比如我們有一個程序在:   C:/Qt/examples/tools/regexp/regexp.exe 1. 程序所在目錄   QString QCoreApplication::appl

static關鍵字,引發的spring普通類獲取spring的bean的思考

pan conf ati ets 普通 blog 編譯器 自定義 這也 在c++和java中static關鍵字用於修飾靜態成員變量和成員函數 舉例一個普通的javabean class AA { int a; static int b; geta/set

js相關的時間獲取方法

strong += 定時 spec comm mce 調用 標準 轉換成 1、獲取時間 var time=new Date();//返回的是GMT,格林尼治標準時間. console.log(time);//Thu Jul 27 2017 16:55:21 GMT+0800

spring與mybati整合方法

interface start face mapper con tro p s org lose (1)spring配置文件: <!-- 引入jdbc配置文件 --> <context:property-placeholder lo

a鏈接獲取方法

getmethod 獲取 ces cti alert add rip spa tin 在a鏈接實現調方法獲取接口地址 1、weixin.js function getinit() { $.ajax({ type: ‘get‘, url: u

[轉]使用@Test 也可以從spring容器中獲取依賴註入

oca fig article ring1 detail ice 如果 text resource 轉自:http://blog.csdn.net/u010987379/article/details/52091790 @RunWith(SpringJUnit4Cla

linux c性能測試的時間間隔獲取方法

時間間隔 lock 測試的 double urn 需要 方法 ++ timezone 一、clock_t clock(void)函數   說明:clock_t其實就是long,即長整形。該函數返回值是硬件滴答數,要換算成毫秒或者秒。換算為毫秒需要除以1000,若換算為秒則除

前端性能測試--啟動時間監控數值獲取方法

指令 key 應用 進程 前端 -- 打開 應用程序 沒有 啟動時間:分為冷啟動和熱啟動   冷啟動:程序的首次啟動,進程首次出現,並加載資源的啟動   熱啟動:應用程序在後臺,並沒有完全被殺死,再次打開的啟動 冷啟動:   啟動app命令:     adb shell

Spring boot隨時獲取ApplicationContex

context aware 獲取 ner itl comm pbo none listen [java] view plain copy print?@Service

spring MVC中獲取request和response:

log clas pos stc body stat response ons style spring MVC中獲取request和response: HttpServletRequest request = ((ServletRequestAttributes)