Nutz Dao與Spring集成

一、集成方式

? 1、采用Spring的IOC,但是事務還是采用Nutz自己管理控制;
??2、采用Spring的聲明式事務管理控制;

二、IOC

直接依據數據源注入即可

    @Beanpublic NutDao nutz(DataSource dataSource) {return new NutDao (dataSource);;}

此時Nutz Dao的事務并不能通過Spring的事務來管理(如@Transactional注解、手動事務等),還是通過Nutz本身的 Trans.exec(() -> {}) 進行管理

例:

    public void testService() {Trans.exec(() -> {dao.insert("test_table", Chain.make("id", 3));throw new RuntimeException("test exception");});}

三、將事務交給Spring管理

step1:繼承NutDao類,重寫run方法

public class SpringNutDao extends NutDao {public SpringNutDao(DataSource dataSource) {super(dataSource);}@Overridepublic void run(ConnCallback callback) {Connection con = DataSourceUtils.getConnection(getDataSource());try {callback.invoke(con);} catch (Exception e) {if (e instanceof RuntimeException) {throw (RuntimeException) e;} else {throw new RuntimeException(e);}} finally {DataSourceUtils.releaseConnection(con, getDataSource());}}
}

step2:將繼承類注入

    @Beanpublic NutDao nutz(DataSource dataSource) {return new SpringNutDao(dataSource);}

step3:將數據源事務管理注入

    @Beanpublic DataSourceTransactionManager  transactionManager(DataSource dataSource) {return new DataSourceTransactionManager(dataSource);}

例1:

    @Transactionalpublic void testService() {dao.insert("test_table", Chain.make("id", 3));throw new RuntimeException("test exception");}

例2:

    @Autowiredprivate PlatformTransactionManager transactionManager;public void testService() {DefaultTransactionDefinition def = new DefaultTransactionDefinition();TransactionStatus transactionStatus = transactionManager.getTransaction(def);try{dao.insert("test_table", Chain.make("id", 3));throw new RuntimeException("test exception");}catch (Exception e){if (transactionStatus.isCompleted()) {System.out.println("事務已完成,無需回滾");}else {transactionManager.rollback(transactionStatus);}}}

四、XML文件方式

Nutz DAO與spring集成討論 - 6小貝 - 博客園

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/895046.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/895046.shtml
英文地址,請注明出處:http://en.pswp.cn/news/895046.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

利用 Python 爬蟲獲取按關鍵字搜索淘寶商品的完整指南

在電商數據分析和市場研究中,獲取商品的詳細信息是至關重要的一步。淘寶作為中國最大的電商平臺之一,提供了豐富的商品數據。通過 Python 爬蟲技術,我們可以高效地獲取按關鍵字搜索的淘寶商品信息。本文將詳細介紹如何利用 Python 爬蟲技術獲…

白嫖RTX 4090?Stable Diffusion:如何給線稿人物快速上色?

大家都知道,在設計的初期,我們通常會先繪制草圖,然后再進行上色處理,最終才開始進行最終的設計工作。在這個上色的過程中,配色是至關重要的一環。這不僅方便了內部同事的評審,也讓產品方和客戶可以直觀地了…

libdrm移植到arm設備

一、環境資源要求 下載libdrm Index of /libdrm 這邊使用的是2.4.114版本,版本太高對meson版本要求也很高,為了省事用apt安裝meson就不用太高版本了,1.x版本雖然使用makefile編譯方便但是太老,對應用支持不太好。 https://dri…

C# 比較兩個List集合內容是否相同

在 C# 中&#xff0c;要比較兩個 List<T> 集合的內容是否相同&#xff0c;可以通過以下幾種方法&#xff1a; 一、非自定義類的元素比較 1. 使用 SequenceEqual 方法&#xff08;順序和內容都相等&#xff09; 順序和內容都相等&#xff1a;使用 SequenceEqual。 usin…

Win10環境使用ChatBox集成Deep Seek解鎖更多玩法

Win10環境使用ChatBox集成Deep Seek解鎖更多玩法 前言 之前部署了14b的Deep Seek小模型&#xff0c;已經驗證了命令行及接口方式的可行性。但是純命令行或者PostMan方式調用接口顯然不是那么友好&#xff1a; https://lizhiyong.blog.csdn.net/article/details/145505686 純…

力扣 239.滑動窗口最大值

思路 滑動窗口 遍歷 解題思路 基本思路&#xff1a;使用滑動窗口法遍歷數組&#xff0c;動態維護當前窗口的最大值。 特殊情況&#xff1a;該方法有一個缺陷&#xff0c;如果出窗口的元素是當前窗口的最大值max時&#xff0c;接下來的窗口中的最大值就無法確定了&#xff0c;所…

【Pandas】pandas Series sum

Pandas2.2 Series Computations descriptive stats 方法描述Series.abs()用于計算 Series 中每個元素的絕對值Series.all()用于檢查 Series 中的所有元素是否都為 True 或非零值&#xff08;對于數值型數據&#xff09;Series.any()用于檢查 Series 中是否至少有一個元素為 T…

kafka服務端之日志磁盤存儲

文章目錄 頁緩存順序寫零拷貝 Kafka依賴于文件系統&#xff08;更底層地來說就是磁盤&#xff09;來存儲和緩存消息 。 那么kafka是如何讓自身在使用磁盤存儲的情況下達到高性能的&#xff1f;接下來主要從3各方面詳細解說。 頁緩存 頁緩存是操作系統實現的一種主要的磁盤緩存…

ES6 Map 數據結構是用總結

1. Map 基本概念 Map 是 ES6 提供的新的數據結構&#xff0c;它類似于對象&#xff0c;但是"鍵"的范圍不限于字符串&#xff0c;各種類型的值&#xff08;包括對象&#xff09;都可以當作鍵。Map 也可以跟蹤鍵值對的原始插入順序。 1.1 基本用法 // 創建一個空Map…

計算機視覺語義分割——Attention U-Net(Learning Where to Look for the Pancreas)

計算機視覺語義分割——Attention U-Net(Learning Where to Look for the Pancreas) 文章目錄 計算機視覺語義分割——Attention U-Net(Learning Where to Look for the Pancreas)摘要Abstract一、Attention U-Net1. 基本思想2. Attention Gate模塊3. 軟注意力與硬注意力4. 實驗…

韶音科技:消費電子行業售后服務實現數字化轉型,重塑客戶服務體系

韶音科技&#xff1a;消費電子行業售后服務實現數字化轉型&#xff0c;重塑客戶服務體系 在當今這個科技日新月異的時代&#xff0c;企業之間的競爭早已超越了單純的產品質量比拼&#xff0c;**售后服務成為了衡量消費電子行業各品牌實力與客戶滿意度的關鍵一環。**深圳市韶音…

機器學習之Transformer 模型

Transformer 模型詳解 Transformer 是由 Vaswani et al. 在 2017 年 提出的模型,最初用于 機器翻譯 任務,并迅速成為自然語言處理(NLP)領域的標準模型架構。與傳統的 RNN(循環神經網絡) 和 LSTM(長短期記憶網絡) 不同,Transformer 的核心思想是 完全基于自注意力機制…

使用 CloudDM 和釘釘流程化管理數據庫變更審批

CloudDM 是一個專為團隊協同工作打造的數據庫數據管控平臺。在管控數據庫安全變更的過程中&#xff0c;為提高效率&#xff0c;CloudDM 接入了釘釘&#xff0c;支持實時通知與移動辦公&#xff0c;滿足廣大企業用戶的實際需求。 本文將介紹如何使用 CloudDM 和釘釘實現高效的數…

【RabbitMQ的重試配置retry】重試配置不生效原因

在Spring Boot項目中&#xff0c;RabbitMQ的retry重試配置不生效可能由以下原因導致&#xff1a; 核心問題定位 retry:enabled: true # ? 配置已開啟max-attempts: 3 # ? 參數有效但實際未觸發重試&#xff0c;可能原因如下&#xff1a; 1. 容器類型不匹配 癥狀表現 配置…

如何在WPS和Word/Excel中直接使用DeepSeek功能

以下是將DeepSeek功能集成到WPS中的詳細步驟&#xff0c;無需本地部署模型&#xff0c;直接通過官網連接使用&#xff1a;1. 下載并安裝OfficeAI插件 &#xff08;1&#xff09;訪問OfficeAI插件下載地址&#xff1a;OfficeAI助手 - 免費辦公智能AI助手, AI寫作&#xff0c;下載…

程序詩篇里的靈動筆觸:指針繪就數據的夢幻藍圖<7>

大家好啊&#xff0c;我是小象?(?ω?)? 我的博客&#xff1a;Xiao Xiangζ????? 很高興見到大家&#xff0c;希望能夠和大家一起交流學習&#xff0c;共同進步。 今天我們一起來學習轉移表&#xff0c;回調函數&#xff0c;qsort… 目錄 一、轉移表1.1 定義與原理1.3…

使用Jenkins實現鴻蒙HAR應用的自動化構建打包

使用Jenkins實現鴻蒙HAR應用的自動化構建打包 在軟件開發領域&#xff0c;自動化構建是提高開發效率和確保代碼質量的重要手段。特別是在鴻蒙&#xff08;OpenHarmony&#xff09;應用開發中&#xff0c;自動化構建更是不可或缺。本文將詳細介紹如何使用Jenkins命令行工具實現…

漏洞分析 Spring Framework路徑遍歷漏洞(CVE-2024-38816)

漏洞概述 VMware Spring Framework是美國威睿&#xff08;VMware&#xff09;公司的一套開源的Java、JavaEE應用程序框架。該框架可幫助開發人員構建高質量的應用。 近期&#xff0c;監測到Spring Framework在特定條件下&#xff0c;存在目錄遍歷漏洞&#xff08;網宿評分&am…

筆記:理解借貸相等的公式

強烈推薦非會計人士&#xff0c;快速了解會計看這個系列的視頻&#xff0c;其中比較燒腦的“借貸相等”公式&#xff0c;這個視頻講解的不錯&#xff1a; 4.小白財務入門-借貸記賬法_嗶哩嗶哩_bilibili 比如這里&#xff0c;錢在銀行卡重&#xff0c;所以銀行存款就是借方…

Java算法技術文章:深入解析排序、搜索與數據結構

引言 在軟件開發的世界里&#xff0c;算法不僅是程序設計的基礎&#xff0c;更是提升軟件性能、優化用戶體驗的關鍵。Java&#xff0c;作為一種廣泛使用的編程語言&#xff0c;提供了豐富的API和標準庫來支持各種算法的實現。本文將深入探討Java中的排序算法、搜索算法以及一些…