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/