1. 程式人生 > >SSH(第八步)—— 整合aop事務

SSH(第八步)—— 整合aop事務

整合aop事務有兩種方式:
1.xml配置的方式
2.註解的方式

準備工作、配置核心事務管理器

在applicationContext.xml檔案中,配置核心事務管理器

<!-- 配置核心事務管理器 -->
      <bean name="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager" >
            <!-- 注入sessionFactory -->
            <property name="sessionFactory" ref="sessionFactory"></property>
      </bean>

使用xml配置的方式整合aop事務

一、配置通知

<!-- 配置通知 -->
      <tx:advice id="txAdvice" transaction-manager="transactionManager" >
            <tx:attributes>
                  <tx:method name="save*" isolation="REPEATABLE_READ" propagation="REQUIRED" read-only="false" />
                  <tx:method name="persist*" isolation="REPEATABLE_READ" propagation="REQUIRED" read-only="false" />
                  <tx:method name="update*" isolation="REPEATABLE_READ" propagation="REQUIRED" read-only="false" />
                  <tx:method name="modify*" isolation="REPEATABLE_READ" propagation="REQUIRED" read-only="false" />
                  <tx:method name="delete*" isolation="REPEATABLE_READ" propagation="REQUIRED" read-only="false" />
                  <tx:method name="remove*" isolation="REPEATABLE_READ" propagation="REQUIRED" read-only="false" />
                  <tx:method name="get*" isolation="REPEATABLE_READ" propagation="REQUIRED" read-only="true" />
                  <tx:method name="find*" isolation="REPEATABLE_READ" propagation="REQUIRED" read-only="true" />
            </tx:attributes>
      </tx:advice>

二、將通知織入目標物件

<!-- 配置將通知織入目標物件-->
      <aop:config>
            <!-- 配置切點 -->
            <aop:pointcut expression="execution(* cn.mwxu16.service.impl.*ServiceImpl.*(..))" id="txPc"/>
            <!-- 配置切面 -->
            <aop:advisor advice-ref="txAdvice" pointcut-ref="txPc" />
      </aop:config>

xml配置事務結束,可以通過下面的測試方法進行測試。

使用註解的方式整合aop事務

一、在applicationContext.xml配置檔案中進行配置

<!-- 開啟註解事務 -->
      <tx:annotation-driven transaction-manager="transactionManager" />

二、在UserServiceImpl類上添加註解

package cn.mwxu16.service.impl;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import cn.mwxu16.dao.UserDao;
import cn.mwxu16.domain.User;
import cn.mwxu16.service.UserService;
@Transactional(isolation=Isolation.REPEATABLE_READ,propagation=Propagation.REQUIRED,readOnly=true)
public class UserServiceImpl implements UserService {
      private UserDao ud;
      @Override
      public User getUserByCodePassword(User u) {
            //測試輸出
            System.out.println("UserService");
            return null;
      }
      @Override
      @Transactional(isolation=Isolation.REPEATABLE_READ,propagation=Propagation.REQUIRED,readOnly=false)
      public void saveUser(User u) {
            // TODO Auto-generated method stub
            ud.save(u);
      }
      public void setUd(UserDao ud) {
            this.ud = ud;
      }
}

三、測試

通過Junit4測試

package cn.mwxu16.test;
import javax.annotation.Resource;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import cn.mwxu16.dao.UserDao;
import cn.mwxu16.domain.User;
import cn.mwxu16.service.UserService;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class TestHibernate {

      //將UserService物件注入進來
      @Resource(name="userService")
      private UserService us;

      @Test
      public void fun4() {
            User u = new User();
            u.setUser_code("kangkang");
            u.setUser_name("康康");
            u.setUser_password("123456");

            us.saveUser(u);

      }
}

注意:

若成功將使用者儲存到資料庫中,則說明事務整合成功。
若事務沒有整合成功,將會測試出現異常,
因為在沒有事務的情況下,所有的操作都是隻讀操作,不能對資料庫進行增刪改操作。

相關推薦

SSH—— 整合aop事務

整合aop事務有兩種方式: 1.xml配置的方式 2.註解的方式 準備工作、配置核心事務管理器 在applicationContext.xml檔案中,配置核心事務管理器 <!-- 配置核心事務管理器 -->

4如何給硬碟調整分割槽邏輯分割槽或拓展分割槽無法給主分割槽容量怎麼辦?windows下如何更改碟符?如何新建磁碟?

使用DiskGenius工具進行調整分割槽。調整分割槽前先看下是否所有碟符(C盤、D盤等等)都是主分割槽。如果不是,則需要全部轉換成主分割槽,否則將不能自由調整。因為邏輯分割槽和主分割槽之間的容量無法相互拓展容量的。一般使用第三方的什麼刷機工具或者去電腦城刷機,都會把C盤給你

文件系統管理

文件系統1. linux文件系統類型1.1 日誌文件系統 ext2及之前的文件系統由於是通過索引節點表來關聯硬盤上的數據塊,所以如果數據正在寫入時斷電或系統崩潰很可能導致當前的文件系統崩潰,為了避免這種情況,在ext3開始的文件系統支持日誌功能,數據在寫入時會先寫入臨時文件(journal)中,待數據全部寫入

python 第二周 我的python成長記 一個月搞定python數據挖掘!(14)

num print 數據 span python rate string spa rom from lxml import etreedoubanhtml = ‘‘‘‘‘‘doc = etree.fromstring(doubanhtml)for eachbook in d

python 第二周 我的python成長記 一個月搞定python數據挖掘!(15)

center project ron 高層 web 快速 art start mes scrapy爬蟲 企業級爬蟲:python開發的一個快速,高層次的web抓取框架,用於抓取web站點並從頁面提取結構化的數據。 scrapy用途廣泛,可用於數據挖掘,數據監測和自動化測試

Java-Web學習筆記

lan request 雙引號 text ava user OS 程序 Language 第八章:表達式語言 一:EL簡介 EL是一種簡單的語言,可以方便的訪問和處理應用程序數據,而無需使用JSP腳本元素或JSP表達式二:EL語法 (1)語法:${表達式

G Counting regions 【歐拉公式】

quic complete 滿足 stream was namespace eve reg efi 題目鏈接:https://www.nowcoder.com/acm/contest/146/G G、Counting regions | 時間限制:1 秒 | 內存限制:1

吳恩達機器學習---正則化

在我們擬合的時候,根據我們選擇函式的不同可能會出現欠擬合,擬合程度較好,過擬合。 1.欠擬合和過擬合        欠擬合,上面第一張圖就是欠擬合情況,欠擬合表現為所選的函式沒有很好的擬合所給的資料,從影象上看就是很多資料都不在函式上,偏

我從事技術的這些年

學習AI  NLP,spark 機器學習 學習AI  NLP,spark 機器學習 學習AI  NLP,spark 機器學習 學習AI  NLP,spark 機器學習 學習AI  NLP,spark 機器學習 學習AI  NLP,spark

單臂路由 eNSP

交換機配置: vlan batch 10 20   (建立vlan) interface Ethernet0/0/1 port link-type trunk port trunk allow-pass vlan 10 20   interface Ethernet0

Linux學習

第八週學習內容:CentOS啟動流程之init程式、AWK 第八週作業: 1、簡述systemd的新特性及unit常見型別分析,能夠實現編譯安裝的如nginx\apache實現通過systemd來管理。       CentOS7的init程式:sy

Socket網路通訊基礎

什麼是網路模型 網路程式設計的本質是兩個裝置之間的資料交換,當然,在**計算機網路**中,裝置主要指計算機。資料傳遞本身沒有多大的難度,不就是把一個裝置中的資料傳送給兩外一個裝置,然後接受另外一個裝置反饋的資料。 現在的網路程式設計基本上都是基於請求/響應方式的

為什麼我要放棄javaScript資料結構與演算法—— 樹

之前介紹了一些順序資料結構,介紹的第一個非順序資料結構是散列表。本章才會學習另一種非順序資料結構——樹,它對於儲存需要快速尋找的資料非常有用。 本章內容 樹的相關術語 建立樹資料結構 樹的遍歷 新增和移除書的節點 AVL 樹 第八章 樹 樹資料結構 樹是一種分層資料的抽象模型。現實生活中最常見的樹的典型例

牛客網暑期ACM多校訓練營G Counting regions【幾何公式推導】

(n−1)(n−2)(n2−3n+12)/24(n−1)(n−2)(n2−3n+12)/24 #include<iostream> #include<cstring>

黑馬程式設計師-Oracle

黑馬程式設計師-Oracle(第八講  建立使用者peng ) 1、在資料庫中建立一個使用者peng,將scott使用者中的內容匯入peng, 首先: 1)匯出一份scott使用者下的資料 在g:盤下建立一個temp資料夾,將從scott使用者中匯出的資料放入temp資料夾

機器學習周志華 課後答案歡迎探討

作為一個初學者,嘗試著去寫作業,並對答案做個整理附錄。 這裡是第八章。 整合學習8.1 假設拋硬幣正面朝上的概率為p , 反面朝上的概率為 1-p.  令H(n)代表拋n次硬幣所得正面朝上的次數,則最多k次正面朝上的概率為   (典型的二項分佈 對小於等於k 的 做累加和) 

STM32小白入門-------低功耗藍芽模組

藍芽是現在智慧生態下運用的最多的,比如智慧手環,智慧手錶,智慧家居也離不開它的身影。我用的是,CC2541低功率藍芽模組4.0 BLE 串列埠 帶底板直排針 無線藍芽模組藍芽是無線短距離傳輸的一種,有79個頻段,工作頻段範圍是2402~2480MHz,通常傳輸距離為10米,經

社會心理學人際吸引 小結摘抄

選擇 inf 帶來 依賴 嬰兒 資源 變化 性格 http 1.人類是社會性動物,我們大部分時間都和其他人在一起度過。 2.實驗室研究表明當人們害怕不確定性是,他們的依賴傾向會增強。 3.嬰兒和生活中的成年人建立起穩固的依賴關系。研究區分了三種不同的依賴類型:安全性、回避型

人際吸引 小結摘抄

1.人類是社會性動物,我們大部分時間都和其他人在一起度過。 2.實驗室研究表明當人們害怕不確定性是,他們的依賴傾向會增強。 3.嬰兒和生活中的成年人建立起穩固的依賴關係。研究區分了三種不同的依賴型別:安全性、迴避型、焦慮、矛盾型。 4.研究者試圖把人們從社會關係中得到的益處進行分類,壁如依戀、社會融合和

C++ Primer Plus 隨記

1.建立引用變數:  int rat; int & roatents=rat; //此式中&不是地址運算子,而是型別表示符,roatents是rat的別名,他們指向相同的值和記憶體單元,改變roatents        &n