小白的進階之路9
---恢復內容開始---
今天開始學習spring的事物管理
先寫一個轉賬的例子:
動手之前,先把邏輯搞清楚:
持久層:
AccountDao(){ ------》接口
public void in(String in,double money);
public void out(String out,double money);
}
AccountDaoImpl{-------》實現類,配置文件需要註入
private serviceDao sd;------->配置文件註入時,采用ref
void in(){}
void out(){}
}
業務層:
serviceDao(){-----》接口
public void pay(String in,String out,double money);
}
ServiceDaoImpl(){----》實現類
private JdbcTemplate jdbcTemplate;-------》這是引用對象,需要用ref註入(這個註入之前一定要記得註入數據庫連接。然後此對象引入ref DataSource。)
public void in(String in,double money);//\這兩個是重寫方法。
public void out(String out,double money);
}
業務層依賴持久層。
jdbc是java數據庫連接,其過程是:
connection(存取事務)-------》c3p0連接池(存取連接,需要註入數據庫)------》plamtransactionmanager平臺事務管理器(管理事務,需要註入連接池)
事物的傳播特性
以上算上復習一下數據庫的知識,話題回到我們之前做的轉賬小例子。
我們都知道,數據庫的一大特性就是事務,那麽?何為事務?
就是要麽一起成功,要麽一起失敗。就上面的例子而言,在沒有任何保證的情況下,如果遇到異常,比如
就會出現一方加錢,一方不減錢的情況,所以說,此時需要一個事務平臺管理器。所以xml配置的正確寫法是
第一步:建立數據庫連接
第二步:配置jdbc模板,模板中需要註入數據庫。
第三步;:建立平臺事務管理器
第四步:配置通知和切面。
OK!!!大功告成。。。。
這時,遇到異常時,不會出現錯誤的轉賬情況。
下面開始用註解的方式完成事務,不需要配置通知和切面,改成如下配置,然後在需要加事務的service層的類或方法上,加上@transactional 註解7
---恢復內容結束---
小白的進階之路9