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