1. 程式人生 > >SpringJDBC整合及Aop事務處理

SpringJDBC整合及Aop事務處理

SpringJDBC整合及Aop事務處理

1、JdbcDaoSupport

​ 可用DaoImpl的類直接繼承,這樣就不需要手動準備Jdbc模板,從父類方法中獲得即可,它實現原理是根據DataSource來實現的。`

public class UserDaoImpl extends JdbcDaoSupport implements UserDao{

//JdbcDaoSupport 根據連線池來建立JdbcTemplate

@Override

public void save(User user) {

String sql = “insert into user values(?,?)”;

super.getJdbcTemplate().update(sql,user.getUsername(),user.getPassword());

}

2、在xml中指定spring讀取db.properties配置

相對應的db.properties內容如下:(之所以前面加個jdbc是防止跟資料庫表名一致導致衝突)

jdbc.driverClassName=com.mysql.jdbc.Driver

jdbc.url=jdbc:mysql://localhost:3306/test

jdbc.username=root

jdbc.password=123456

根據依賴用spring來建立物件步驟:

3、spring中aop事務

事務特性:acid

事務併發問題:髒讀 、不可重複讀、幻讀

注意:在spring中玩事務管理.最為核心的物件就是TransactionManager物件

事務傳播行為:有七個,通常預設是PROPAGATION_REQUIRED(支援當前事務,如果不存在,就新建一個)

4、spring管理事務的方式

無論進行以下哪種配置,都需要在spring容器中配置事務核心管理器,有datasource.DataSourceTransactionManager或者HibernateTransactionManager,該物件依賴於連線池。

1、xml配置(aop)

導包:基本4+2 +aop+ aspect+ aop聯盟 + weaving織入包

導約束:beans: 最基本 context:讀取properties配置 aop:配置aop tx:配置事務通知

配置事務管理器:

配置通知:

配置將通知織入目標物件:

2、註解配置(aop):

1、導包、導約束

2、配置事務管理器

3、開啟註解管理事務:

4、在需要使用的事務的方法使用註解:

//如果想對類中所有方法都應用,可將註解加在類上,如果相對某個方法進行修改,在方法上重新寫一個

@Transactional(isolation=Isolation.REPEATABLE_READ,propagation=Propagation.REQUIRED,readOnly=true)

public class AccountServiceImpl implements AccountService {

private AccountDao ad;

@Transactional(isolation=Isolation.REPEATABLE_READ,propagation=Propagation.REQUIRED,readOnly=false)

public void transfer(Integer from, Integer to, Double money) {

ad.decreaseMoney(from, money);

int i=1/0;

ad.increaseMoney(to, money);

}

public void setAd(AccountDao ad) {

this.ad = ad;

}

}

最終在demo中測試轉賬,成功;並在出現異常時可以保持資料的一致性。

5、總結:

通過這個轉賬的小例子,比較深入理解了spring的兩大特性,控制反轉和麵向切面,即spring可以很方便的解決物件建立時的依賴問題,而且在需要建立物件的時候才建立,極大方便了開發;而aop更是對事務操作帶來了很大的便利,讓service層處理事務邏輯變得簡單。

瀋陽治療性病醫院哪家權威:http://www.lnjk120.com/

瀋陽專業治療皰疹醫院:http://www.sdjk99.com/