Re: [J2EE] JPA JTA

作者: cyclone350 (老子我最神)   2015-08-05 01:10:51
※ 引述《luoqr (.....)》之銘言:
我在寫某個專案也很奇怪
只要 entity 有異動到,就算不做 save or update 等方法
transaction 結束後會把全部的異動 commit 到 DB 裡面...
還有一個就是
若 entity constraint 設定若跟 DB 不符,
save 當下不會出錯,transaction 結束後才會出錯
但是包在 transaction 外層的 code block 並不會接到 exception...
像這樣
try {
test1();
log.info("完成");
} catch(Exception e) {
log.error("出現錯誤")
}
就算 test1 出錯 (transaction 掛 test1),仍會 log 出 "完成"
這兩個 case 我不能理解阿,有人能解釋嗎?
作者: luoqr (.....)   2015-08-05 07:45:00
1.entity處於managed狀態 只要有異動就會反應到db2.資訊不足無法判斷 XD
作者: swpoker (swpoker)   2015-08-05 10:24:00
主要還是"同步的時機點",同步次數過多是沒有必要的同步基本就是交易範圍最後的時間點才會做照你的例子,交易範圍超過你的程式範圍你要限制交易的範圍在哪
作者: phstudy (study)   2015-08-05 15:56:00
1.是container managed persistence才會有這種現象application managed persistence就要自己處理了如果不知道CMP跟AMP差別,建議你去讀JSR338 7.6~7.8這裡的container是指JEE container標準的tomcat不是JEE container, TomEE就另當別論了標準的Tomcat是不支援CMP的另外也可以用AOP去做出類似CMP的行為
作者: asship (孤帆遠影)   2015-08-07 23:24:00
請問是使用什麼資料庫呢? oracle預設會commitdatasource使用apache的dbcp的話,預設是auto commitoracle的ucp.jar也是如此c3p0會幫忙rollback

Links booklink

Contact Us: admin [ a t ] ucptt.com