欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

spring學習JdbcTemplate數(shù)據(jù)庫事務管理

 更新時間:2022年05月30日 10:25:08   作者:把蘋果咬哭的測試筆記  
這篇文章主要為大家介紹了spring學習JdbcTemplate數(shù)據(jù)庫事務管理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

spring JdbcTemplate數(shù)據(jù)庫事務管理

現(xiàn)在有個賬戶表,里面存著用戶金額。

如果要真正地做好轉(zhuǎn)賬的操作,就要用到事務,否則當出現(xiàn)異常后會出現(xiàn)數(shù)據(jù)不一致等問題。

try {
  // 第一步 開啟事務
  // 第二步 進行業(yè)務操作
  // 第三步 沒有發(fā)生異常,提交事務
} catch(){
  // 第四步 發(fā)生異常,事務回滾
}

一、spring 中的事務管理

通常,把事務加在 service 層(業(yè)務邏輯層)。

而在 spring 中管理事務可以有 2 種方式實現(xiàn):

  • 編程式管理:就像上面?zhèn)未a那樣,這種使用起來不方便。
  • 聲明式管理:通過配置方式實現(xiàn),推薦使用。其中,可以基于 XML 方式進行配置,也可以基于注解,顯然后者更方便。

在 spring 中進行聲明式事務管理,底層使用的是 AOP 原理。

二、spring 事務管理 API

spring 提供了一個接口 PlatformTransactionManager ,代表事務管理器。此接口針對不同的框架提供不同的實現(xiàn)類。

利用idea工具,展開結構,使用 jdbcTemplate 用到的是 DataSourceTransactionManager 。

三、使用事務管理

1. 配置文件

創(chuàng)建事務管理器。

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <!--注入數(shù)據(jù)源-->
        <property name="dataSource" ref="dataSource"></property>
    </bean>

開啟事務注解,使用名稱空間 tx。

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

2. 類上添加事務注解

注解 @Transactional 可以加在 service 類上,也可以加到方法上:

加到類上,表示類下所有的方法都添加了事務。加到方法,表示只有該方法添加事務。

@Service
@Transactional
public class UserService {
    @Autowired
    private UserDao userDao;
    // 轉(zhuǎn)賬方法
    public void accountMoney() {
        // 大周 少 100
        userDao.reduceMoney();
        // 模擬異常
        int i = 1/0;
        // 小毛 加 100
        userDao.addMoney();
    }
}

接口實現(xiàn)類 UserDaoImpl 。

@Repository
public class UserDaoImpl implements UserDao {
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Override
    public void addMoney() {
        String sql = "update t_account set money=money+? where username=?";
        jdbcTemplate.update(sql, 100, "小毛");
    }
    @Override
    public void reduceMoney() {
        String sql = "update t_account set money=money-? where username=?";
        jdbcTemplate.update(sql, 100, "大周");
    }
}

到測試類里執(zhí)行一下:

public class TestTrans {
    @Test
    public void testJdbc() {
        ApplicationContext context =
                new ClassPathXmlApplicationContext("bean1.xml");
        UserService userService = context.getBean("userService", UserService.class);
        userService.accountMoney();
    }
}

注意,上面的 service 里我手動添加了異常,所以執(zhí)行后,事務應該是要回滾操作,2 個人的金額仍然各是 1000 。

八月 07, 2021 10:39:57 上午 com.alibaba.druid.pool.DruidDataSource info
信息: {dataSource-1} inited
java.lang.ArithmeticException: / by zero

刷新數(shù)據(jù)表。

現(xiàn)在我去掉 service 類中的異常 int i = 1/0;,重新執(zhí)行測試方法:

八月 07, 2021 10:47:01 上午 com.alibaba.druid.pool.DruidDataSource info
信息: {dataSource-1} inited
Process finished with exit code 0

刷新數(shù)據(jù)表。

結果正確。

以上就是spring學習JdbcTemplate數(shù)據(jù)庫事務管理的詳細內(nèi)容,更多關于spring JdbcTemplate數(shù)據(jù)庫事務的資料請關注腳本之家其它相關文章!

相關文章

  • Eureka源碼閱讀之環(huán)境搭建及工程結構

    Eureka源碼閱讀之環(huán)境搭建及工程結構

    這篇文章主要為大家介紹了Eureka源碼閱讀之環(huán)境搭建的工程結構及調(diào)試需知詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪<BR>
    2022-10-10
  • java環(huán)境變量配置和adb的配置教程詳解

    java環(huán)境變量配置和adb的配置教程詳解

    這篇文章主要介紹了java環(huán)境變量配置和adb的配置教程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • 識別率很高的java文字識別技術

    識別率很高的java文字識別技術

    這篇文章主要為大家詳細介紹了識別率很高的java文字識別技術,親測,希望對大家有幫助,感興趣的小伙伴們可以參考一下
    2016-08-08
  • springboot 場景啟動器使用解析

    springboot 場景啟動器使用解析

    這篇文章主要介紹了springboot 場景啟動器使用解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-02-02
  • java?String拼接json的方式實現(xiàn)

    java?String拼接json的方式實現(xiàn)

    本文主要介紹了java?String拼接json的方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-09-09
  • Java之如何關閉流

    Java之如何關閉流

    這篇文章主要介紹了Java之如何關閉流問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Java 序列化和反序列化實例詳解

    Java 序列化和反序列化實例詳解

    這篇文章主要介紹了Java 序列化和反序列化實例詳解的相關資料,需要的朋友可以參考下
    2017-03-03
  • SSH框架網(wǎng)上商城項目第25戰(zhàn)之使用java email給用戶發(fā)送郵件

    SSH框架網(wǎng)上商城項目第25戰(zhàn)之使用java email給用戶發(fā)送郵件

    這篇文章主要為大家詳細介紹了SSH框架網(wǎng)上商城項目第25戰(zhàn)之使用java email給用戶發(fā)送郵件,感興趣的小伙伴們可以參考一下
    2016-06-06
  • Struts 2中的constant配置詳解

    Struts 2中的constant配置詳解

    通過對這些屬性的配置,可以改變Struts 2 框架的一些默認行為,這些配置可以在struts.xml文件中完成,也可以在struts.properties文件中完成
    2016-09-09
  • myeclipse創(chuàng)建servlet_動力節(jié)點Java學院整理

    myeclipse創(chuàng)建servlet_動力節(jié)點Java學院整理

    這篇文章主要為大家詳細介紹了myeclipse創(chuàng)建servlet的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07

最新評論