首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将AutoCommit与UserTransaction结合使用

将AutoCommit与UserTransaction结合使用
EN

Stack Overflow用户
提问于 2015-09-23 06:40:28
回答 1查看 422关注 0票数 0

想知道以下内容是否正确?

代码语言:javascript
复制
UserTransaction ut = getUserTransaction();
ut.begin();     
conn = dataSource.getConnection();
conn.setAutoCommit(false);
stmt = conn.createStatement();
// perform statement query udpate here

// do i need to call conn.commit? or ut.commit will handle it implicitly?
ut.commit();

我在我公司的一个项目中看到了代码片段,我对它进行了测试,发现了一些奇怪的行为,所以我不确定我们是否应该显式地调用conn.commit()?还是让ut.commit()处理所有事务在其内部?

所以它开始让我困惑,我们应该把什么放在UserTransaction.begin()UserTransaction.commit()里面?由于它应该主要是SQL语句执行代码,那么是否有必要在块中包括conn = dataSource.getConnection();呢?那么,由特定connection生成的所有connection都会隐式地运行,就像我们使用AutoCommit(false)一样?如果我们在块之外声明那个(conn = dataSource.getConnection())会发生什么呢?交易处理仍然有效吗?

请大家分享一些关于UserTransaction如何工作的知识?我基本上知道如何使用它,但没有具体的想法,我应该注意什么,当我使用它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-03 02:08:18

使用容器管理事务划分的企业bean不能使用任何干扰容器事务划分边界的事务管理方法。这些方法的例子是java.sql.Connection的commit、java.sql.Connection和rollback方法或javax.jms.Session的提交和回滚方法。如果需要对事务划分进行控制,则必须使用应用程序管理的事务划分。 使用容器管理事务划分的企业bean也不能使用javax.transaction.UserTransaction接口。

我读过,我认为同时使用事务和autoCommit可能不是很好的主意。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32732685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档