Hibernate事務配置的幾種方式
為了保持資料的一致性和完整性,在程式設計中通常會引用到事務的概念。這裡就不對事務做一一講解,大家可以看我前面的一篇講事務的部落格java JDBC事務和JTA事務詳解。事務一般有兩種:程式設計式事務和宣告式事務;程式設計式事務就是將事務處理放在程式中,而宣告式事務則是通過配置檔案或者註解進行操作。
在Spring中我們通常使用的是宣告式事務通過和Hibernate的整合去完成hibernate事務配置。
其實配置Hibernate事務的核心就一種:
(1)、配置SessionFactory;
(2)、配置事務容器;
(3)、配置事務規則;
(4)、配置事務入口;
下面我們看看通常Hibernate事務配置使用的幾種方式:
第一種:代理;
<!-- 配置事務容器 --> <beanid="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <propertyname="sessionFactory"ref="sessionFactory"/> </bean> <!-- 定義事務規則 --> <beanid="transactionProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"abstract="true"> <propertyname="transactionManager"ref="transactionManager"/> <propertyname="transactionAttributes"> <props> <!-- ,回滾為-,不回滾為+ --> <propkey="add*">PROPAGATION_REQUIRED,-Exception</prop> <propkey="modify*">PROPAGATION_REQUIRED,+MyException</prop> <propkey="del*">PROPAGATION_REQUIRED</prop> <propkey="*">READONLY</prop> </props> </property> </bean> <!-- 定義事務入口 --> <beanid="userDaoProxy"parent="transactionProxy"> <propertyname="target"ref="userDao"></property> </bean>
第二種:攔截器
<!-- 配置事務容器 --> <beanid="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <propertyname="sessionFactory"ref="sessionFactory"/> </bean> <!-- 定義事務規則 --> <beanid="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor"> <propertyname="transactionManager"ref="transactionManager"/> <propertyname="transactionAttributes"> <props> <!-- 回滾為-,不回滾為+ --> <propkey="add*">PROPAGATION_REQUIRED,-Exception</prop> <propkey="modify*">PROPAGATION_REQUIRED,+MyException</prop> <propkey="del*">PROPAGATION_REQUIRED</prop> <propkey="*">READONLY</prop> </props> </property> </bean> <!-- 定義事務入口 --> <beanid="proxyFactory" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"> <propertyname="interceptorNames"> <list> <value>transactionInterceptor</value> </list> </property> <propertyname="beanNames"> <list> <value>*Dao</value> </list> </property> <!--使用介面時--> <property name="proxyTargetClass"> <value>true</value> </property> </bean>
第三種:利用註解
<!-- 開戶事務註解功能 --> <tx:annotation-driventransaction-manager="transactionManager"/>
首先在配置檔案中寫入該語句,開啟註解功能,然後利用@Transactional對類或者方法進行標記,如果標記在類上,每次此類中的所有方法都進行事務回滾處理,在類中定義Transactional的時候,它有propagation、rollbackFor、noRollbackFor等屬性,此屬性是用來定義事務規則,而定義到哪裡,哪裡就是事務的入口。
第四種:配置SessionFactory ----配置會話工廠
<!-- 配置資料來源 --> <beanid="dataSource"class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <propertyname="driverClassName"value="com.mysql.jdbc.Driver"></property> <propertyname="url"value="jdbc:mysql://localhost:3306/hibernate_cache"></property> <propertyname="username"value="root"></property> <propertyname="password"value="admin"></property> </bean> <!-- 2.2、配置SessionFactory --> <beanid="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <propertyname="dataSource"ref="dataSource"></property> <propertyname="hibernateProperties"> <props> <propkey="hibernate.hbm2ddl.auto">update</prop> </props> </property> <propertyname="mappingLocations"> <list> <value>classpath:實體對應xml的路徑</value> </list> </property> </bean> <!--到這裡Hibernate就成功的將SessionFactory交給了Spring來管理。 然後利用tx標籤配置事務。--> <!-- 配置事務容器 --> <beanid="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <propertyname="sessionFactory"ref="sessionFactory"/> </bean> <!-- 定義事務規則 --> <tx:adviceid="txAdvice"transaction-manager="transactionManager"> <tx:attributes> <tx:methodname="add*"propagation="REQUIRED"/> <tx:methodname="modify*"propagation="REQUIRED"/> <tx:methodname="del*"propagation="REQUIRED"/> <tx:methodname="*"propagation="REQUIRED"read-only="true"/> </tx:attributes> </tx:advice> <!-- 定義事務入口 --> <aop:config> <aop:pointcutid="allDaoMethod"expression="execution(* com.jianxin.dao.*.*(..))" /> <aop:advisoradvice-ref="txAdvice"pointcut-ref="allDaoMethod"/> </aop:config>
相關推薦
Hibernate事務的幾種配置方式
為了保證資料的一致性,在程式設計的時候往往需要引入事務這個概念。事務有4個特性:原子性、一致性、隔離性、永續性。 事務的種類有兩種:程式設計式事務和宣告式事務。程式設計式事務就是將事務處理放在程式中,而宣告式事務則是通過配置檔案或者註解進行操作。
(轉)spring事務管理幾種方式
pac jpg gets point aos load man classpath XML 轉自:http://blog.csdn.net/jeamking/article/details/43982435 前段時間對Spring的事務配置做了比較深入的研究,在此之間對
Hibernate事務配置的幾種方式
為了保持資料的一致性和完整性,在程式設計中通常會引用到事務的概念。這裡就不對事務做一一講解,大家可以看我前面的一篇講事務的部落格java JDBC事務和JTA事務詳解。事務一般有兩種:程式設計式事務和宣告式事務;程式設計式事務就是將事務處理放在程式中,而宣告式事務則是通過配置
Spring管理 hibernate 事務配置的五種方式
Spring配置檔案中關於事務配置總是由三個組成部分,DataSource、TransactionManager和代理機制這三部分,無論是那種配置方法,一般變化的只是代理機制這塊! 首先我建立了兩個類,一個介面一個實現: Java程式碼&
Spring管理 hibernate 事務配置的五種方式
Spring配置檔案中關於事務配置總是由三個組成部分,DataSource、TransactionManager和代理機制這三部分,無論是那種配置方法,一般變化的只是代理機制這塊! 首先我建立了兩個類,一個介面一個實現: Java程式碼
事務有哪些特性?spring的事務管理有幾種方式實現,如何實現?spring 中常用的兩種事務配置方式以及事務的傳播性、隔離級別
事務有哪些特性? 1.原子性:一個事務中所有對資料庫的操作是一個不可分割的操作序列,要麼全做要麼全不做 2.一致性:資料不會因為事務的執行而遭到破壞 3.隔離性:一個事物的執行,不受其他事務的干擾,即併發執
Windows上安裝配置SSH教程(7)——幾種方式對比
由於 客戶端 方案 body open ins 下使用 上傳下載 直接 服務端:Windows XP 客戶端:Windows 10 由於Cygwin也可以安裝OpenSSH,所以客戶端其實可以直接使用Cygwin安裝OpenSSH,那麽在Windows下使用SCP(安全拷貝
Hibernate的條件查詢的幾種方式+查詢所有的記錄
數據庫 rop query 寫法 OS 由於 AC 對象 tst 1、 第一種,用?占位符,如: //登錄(用?占位符) public List<UserPO> LoginUser(UserPO up)throws Exception{ Session
springboot 讀取 yml 配置的幾種方式
前言:在springboot 專案中一般預設的配置檔案是application.properties,但是實際專案中我們一般會使用application.yml 檔案,下面就介紹一下在springboot 中讀取 yml 配置的幾種方式. yml 檔案規則 yml檔案的好處,天然的樹狀結構,一目瞭然
虛擬機器配置網路(ip)的幾種方式
配置IP有兩種方式:自動獲取ip和設定靜態IP。 A、自動獲取ip $ sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0 ONBOOT=yes---------設定開機自動啟用網絡卡。 1、橋接模式: 相當於連線到物理機
sql 迴圈語句幾種方式(變數迴圈,遊標迴圈,事務)
--第一 declare @orderNum varchar(255) create table #ttableName(id int identity(1,1),Orders varchar(255)) declare @n
sql 循環語句幾種方式(變量循環,遊標循環,事務)
llb reat 語句 tab create cti table end 數據 --第一 declare @orderNum varchar(255) create table #ttableName(id int identity(1,1),Ord
Java 讀取 .properties 配置檔案的幾種方式
Java 開發中,需要將一些易變的配置引數放置再 XML 配置檔案或者 properties 配置檔案中。然而 XML 配置檔案需要通過 DOM 或 SAX 方式解析,而讀取 properties 配置檔案就比較容易。 介紹幾種讀取方式: 1、基於ClassLoder
hibernate建立SessionFactory的幾種方式,及原因分析?
全網搜尋不到原因分析,如下是我自己總結的,參考的是原始碼介紹! 1. hibernate3.X SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory
Spring中配置資料來源的幾種方式
無論使用什麼形式的Spring DAO支援類,都需要配置資料來源的引用。Spring提供了多個選項,用於在Spring程式裡配置資料庫,其中包括: 1,由JDBC驅動程式定義的資料來源。 2,由JNDI查詢的資料來源。 3,連線池的資料來源。 在Spring裡,我們可以像使用其他
Java 讀取 properties 配置檔案的幾種方式及注意點
1、引言 java開發中,經常需要讀取配置檔案,有時即使我們方法是對的,但是就是讀取不到需要的內容,會報下面的錯: java.io.FileNotFoundException: sr/configure/config.properties (No such file or dir
SpringBoot讀取配置資料的幾種方式
#####SpringBoot讀取配置資料的幾種方式 方式一: 我們通過@Value("${spring.datasource.url}")這樣的方式讀取PropertyPlaceholderConfigurer.properties配置資料集合,本種方式是可以適應各種應用場景,推薦
Spring事務管理之幾種方式實現事務
1、事務認識 大家所瞭解的事務Transaction,它是一些列嚴密操作動作,要麼都操作完成,要麼都回滾撤銷。Spring事務管理基於底層資料庫本身的事務處理機制。資料庫事務的基礎,是掌握Spring事務管理的基礎。這篇總結下Spring事務。 事務具備ACID四種特性,
Spring監聽配置的幾種方式
方法一:在applicationContext.xml配置檔案中配置 <task:scheduled-tasks> <!-- 每天凌晨兩點執行 --> <task:scheduled ref="zginfoServ
udev配置RAC ASM的幾種方式
一、60-raw.rules [[email protected] ~]# vi /etc/udev/rules.d/60-raw.rules ACTION=="add",KERNEL=="sdb",RUN+="/bin/raw /dev/raw/raw1 %N"