這個類能夠將一個對象和一個線程綁定起來,我的理解就是他維持了一個Map<Thread, T>集合。

萬碼學堂,電腦培訓,計算機培訓,Java培訓,JavaEE開發(fā)培訓,青島軟件培訓,軟件工程師培訓

萬碼學堂,電腦培訓,計算機培訓,Java培訓,JavaEE開發(fā)培訓,青島軟件培訓,軟件工程師培訓

         之所以寫這個類是因為 DBUtils 工具類,在 JavaEE 經典三層結構中對于事務的操作,不方便放在 DAO 層,因為具有侵入性,只適合放在 Service層開啟事務,但是由于要調用 DAO 中不同的方法來完成一個事務,就涉及到 conn 對象的傳遞,因為要保證是同一個 conn 對象在操作事務,要不然就會出亂子了,就會想到將 conn 對象當成參數傳遞給 ADO 層的若干方法,但是有時候連 Service 都沒有 conn 對象的持有,更別說當成參數傳遞給  DAO 層了,但是想一想,執(zhí)行一個事務的線程肯定是同一個線程,這樣就可以用上ThreadLocal 類了,在使用連接池時就將 conn 對象和當前線程綁定,在之后的 ADO 中獲取 conn 對象時,也是通過連接池獲取 conn 對象,此時也肯定是同一個 conn 對象。

這個ThreadLocal類中提供的方法不多,我下面使用的就是 get/set 方法

萬碼學堂,電腦培訓,計算機培訓,Java培訓,JavaEE開發(fā)培訓,青島軟件培訓,軟件工程師培訓

       下面是一個轉賬的事務:(數據庫中 account 表有三個字段:id, name, money)

下面是JDBCUtils工具類中核心代碼:

萬碼學堂,電腦培訓,計算機培訓,Java培訓
        
		<div   id=

網友評論