1. 程式人生 > >spring-hibernate整合 事務不起作用

spring-hibernate整合 事務不起作用

當spring和hibernate 整合後,事務不起作用

解決辦法:通過Spring的SessionFactory的getCurrentSession的方法建立Session

一、首先說一下hibernate中建立用來連線資料庫的Session,有兩種方式。

1.通過Spring的SessionFactory的getCurrentSession的方法建立Session 。

2.通過Spring的SessionFactory的OpenSession的方法建立Session。

getCurrentSession 建立的Session會繫結到當前執行緒中去,commit或rollback後會,自動關閉Session。

OpenSession 重新開啟一個執行緒建立Session,需要手動關閉Session,如果不關閉將導致session關聯的資料庫連線無法釋放,最後資源耗盡而使程式當掉。              。

二、而當hibernate利用spring中的繫結事務來配置的時候如下圖:

配置事務是,需要將資料庫中的資料來源,注入 HibernateTransactionManager可以說,事務的配置是,針對於資料庫來說的。(我是這麼理解的)

所以,當我們採用OpenSession來建立Session來連線資料庫的話,和事務連線資料庫是兩個執行緒的操作,所以事務根本不會起作用。

應該採用getCurrentSession進行session的建立。

相關推薦

spring-hibernate整合 事務作用

當spring和hibernate 整合後,事務不起作用 解決辦法:通過Spring的SessionFactory的getCurrentSession的方法建立Session 一、首先說一下hibernate中建立用來連線資料庫的Session,有兩種方式。 1.通過Sp

spring,springmvc,hibernate整合事務作用

剛學習完這三大框架,跟著別人的部落格整合一下,就測試一下事務是否起作用,用的1/0來測試,用的@Transactional註解在service層,發現事務始終不起作用,也在網上查了一些資料,發現spring,springmvc配置檔案中掃描包衝突了,因為我的是在web.xm

Spring+Mybatis整合事務作用之解決方案彙總

前言: 公司最近一個專案用到Spring和Mybatis,發現用起來挺方便,比以前的那個struts+hibernate舒服多了。廢話少說,直接擺問題,碰到的問題是,mybatis不在事務中執行,後臺日誌報 “Closing no transactional SqlSes

Spring+Mybatis整合事務作用之…

前言: 公司最近一個專案用到Spring和Mybatis,發現用起來挺方便,比以前的那個struts+hibernate舒服多了。廢話少說,直接擺問題,碰到的問題是,mybatis不在事務中執行,後臺日誌報 “Closing no transactional SqlSession [[email&#

Spring Boot使用事務作用

今天使用spring boot做關於事務的demo時發現在service層使用@Transactional註解執行之後遇到錯誤並不能回滾。@Service public class HelloContr

Spring 事務作用的幾種情況

service() true bean 每次 語句 imp 作用 stc current 1:必須是runtime異常,方法不要有try catch語句。 2:service 中 @Service() public class AServiceImpl1 imple

jdk動態代理引起的spring事務作用

最近做專案遇到了一個很奇怪的問題,大致的業務場景是這樣的:我們首先設定兩個事務,事務parent和事務child,在Controller裡邊同時呼叫這兩個方法,示例程式碼如下: 1、場景A: 這裡其實是分別執行了兩個事物,執行的結果是兩個方法都可以插入資料!如下: 2、場景B: 修改上述程式碼如下:

在使用spring mvc時,我使用了@Service這樣的註解, 發現使用註解@Transactional宣告的事務作用

問題出現的場景: 在使用spring mvc時,我使用了@Service這樣的註解, 發現使用註解@Transactional宣告的事務不起作用。 我的配置如下: <mvc:annotation-driven /> <context:component-s

spring @Transactional 方法內事務作用的解決辦法

class ManagerImpl implements Manager { @Override public void Method(){updateAndDelete()} public void updateBankCardBalance(){dao.update(

Spring事務作用原因

首先宣告: Checked異常繼承java.lang.Exception類。Unchecked異常繼承自java.lang.RuntimeException類。 而,Spring的事務實現採用基於AOP的攔截器來實現,如果沒有在事務配置的時候註明回滾的checked exception, 那麼只有在發生了un

Spring事務作用問題彙總

1、首先使用如下程式碼 確認bean 是代理物件嗎? 必須是Spring定義(通過XML或註解定義都可以)的Bean才接受事務。 直接new出來的物件新增事務是不起作用的。 可以通過以下方式判斷是否是代理物件: AopUtils.isAopProxy(Object o

spring 事務作用 問題彙總

今早接手了別人的專案,測試了一下事務,發覺不起作用,檢查了N久程式碼,才發覺是springMVC 配置檔案裡context:component-scan重複掃碼了service,導致事務不起作用(建議MVC scan只掃描action或Controller),

spring事務、當業務中並沒有異常丟擲時執行一半的事務無法正常出發導致資料一致性遭到破壞、事務作用

spring 事務:當所攔截的方法有指定錯誤丟擲的時候觸發事務的執行。 有些情況下正常開發的業務並沒有異常的發生、但是業務要求並沒有滿足的時候並不會有異常的產生。這個時候需要我們自己手動丟擲異常。觸發事務、保證資料的一致性。 手動丟擲異常有兩種方式: 一:手動丟擲異常:

Spring Ehcache中@Cacheable作用

cts pri col time 查找文件 後綴名 數值 spring div 確認各項配置沒有問題。 一開始關於EhCache的配置放在了SpringMVC.xml中,移動到applicationContext.xml中,解決。 以下為EhCache的配置: <!-

spring boot2 配置 FastJsonHttpMessageConverter 作用

專案使用自定義 FastJsonHttpMessageConverter 進行API資料響應JSON轉換器 在原來springboot1.X 版本中是可以生效,配置如下: /** * 替換使用 FastJson 解析返回結果 */ @Overrid

@Transactional事務作用原因補充

今天,使用@Transactional,但是事務卻不起作用,配置確定配置成功,在網上查詢資料,在每個每個原因都試了之後仍然無效,最終發現,原來他們都漏了一個原因,而我正好是這個原因。 因為spring

Spring註解式事物作用的原因分析

1、首先檢查配置檔案是否正確:<!-- 事物管理器 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionM

springMVC mybatis mysql 配置 事務作用的原因

springMVC和spring一起使用的時候,配置檔案會先後生成。大家現在多數喜歡用spring的註解方式進行配置,在配置檔案中會有包的掃描過程,然而spring的掃描生成的service是具有事務處理能力的service,springMVC掃描出來的service是不具有事務處理能力的service。sp

事務作用

參考:http://blog.csdn.net/qq_32588349/article/details/52097943 http://blog.csdn.net/u010310183/article/details/51769407 重點:使用context:includ

springmvc+spring3.1+hibernate4配置事務作用

在學習SpringMVC的過程中,使用springmvc+spring3.1+hibernate4的時候,採用宣告式的事物,但是在修改和刪除的時候,事務不起作用,具體的2個配置檔案如下; applicationContext.xml如下; <?xml version=