Re: [J2EE] JPA JTA

看板java作者 (study)時間8年前 (2015/08/05 23:31), 編輯推噓3(304)
留言7則, 2人參與, 最新討論串3/4 (看更多)
剛剛重新看了Spec, 發現我的回文也不太準確... spec在這裡: https://jcp.org/en/jsr/detail?id=338 準確來說是這樣 EM的部分 1. Container Managed(CM) EM必須是JTA EM 2. Application Managed(AM) EM可以是JTA EM或resource-local EM Container的部分 1. JEE Container支援JTA EM與resource-local EM, 可以在JEE Container中使用CM與AM 2. 非JEE Container支援JTA EM與resource-local EM, 但只能使用AM 所以這種method結束後會自動commit的行為是JTA EM造成的 XD ※ 引述《cyclone350 (老子我最神)》之銘言: : ※ 引述《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 我不能理解阿,有人能解釋嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.195.55.170 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1438788669.A.978.html

08/06 06:36, , 1F
感謝提供整理,我再看看
08/06 06:36, 1F

08/06 06:37, , 2F
不過跟句你整理的話,是代表我用 tomcat (非tomEE)
08/06 06:37, 2F

08/06 06:38, , 3F
在沒特別用AOP的請況下是不會出現我文中的行為摟!?
08/06 06:38, 3F

08/06 06:39, , 4F
因為全部 commit 是 CM 的行為
08/06 06:39, 4F

08/06 07:44, , 5F
當我沒說,我以為你是回答save那個問題 XD
08/06 07:44, 5F

08/08 09:50, , 6F
Container還分為CMT/BMT BMT要自己下commit不會自動commit
08/08 09:50, 6F

08/08 09:52, , 7F
另外AM若在BMT tx.begin()之外建立 還得joinTransaction()
08/08 09:52, 7F
文章代碼(AID): #1LmYmzbu (java)
討論串 (同標題文章)
文章代碼(AID): #1LmYmzbu (java)