1. 程式人生 > >java的事務巢狀

java的事務巢狀

java中事務的巢狀:
  1. 。。。。。。。。。。。。
  2. TransactionManager.beginTransaction();//事務1
  3.         A();    //呼叫方法A    
  4. TransactionManager.commitTransaction();
  5. 。。。。。。。。。。。。
方法A
  1. A(){
  2. 。。。。。。。。。。。。
  3. TransactionManager.beginTransaction();//事務2
  4.         。。。。。。。
  5. TransactionManager.commitTransaction[color=#FF0000]();//此處事務的提交是否把事務1一起提交了?事務的巢狀是不是就近原則?[/color]。。。。。。。。。。。。
  6. }
事我們的專案分好幾個工程,務1本身是一個工程內地,事務2是在另外一個工程內,由於事務1內的dao操作完了後需要呼叫事務2的方法,而事務2的方法是公用內必須有事務的開始和提交,且事務2的方法在事務1的方法內呼叫了兩次。如下面的原始碼:
Java code


  1. A(){
  2. 。。。。。。。。。。。。
  3. TransactionManager.beginTransaction();//事務2
  4.         。。。。。。。
  5. TransactionManager.commitTransaction[color=#FF0000]();//此處事務的提交是否把事務1一起提交了?事務的巢狀是不是就近原則?[/color]。。。。。。。。。。。。
  6. 。。。。。。。。。。。。
  7. TransactionManager.beginTransaction();//事務2第二此呼叫
  8.         。。。。。。。
  9. TransactionManager.commitTransaction[color=#FF0000]();//此處事務的提交是否把事務1一起提交了?事務的巢狀是不是就近原則?[/color]。。。。。。。。。。。。
  10. }
事務2的第一次呼叫若沒有提交,會造成鎖表。

這種情況下,我該怎麼設計?

比較鬱悶。我自己感覺說的都比較亂。 事務2的工程我是打成jar,放到事務1的工程內,讓事務1的工程呼叫地。