我已经阅读了有关事务隔离级别的内容。它用于防止并行事务执行错误。这很明显。还有可用于实体的锁定模式。我了解它们的工作原理。但是我找不到需要锁定的原因?我已经使用过事务隔离级别。为什么我必须使用锁定?隔离级别和锁定做同样的工作吗? 最佳答案 事务隔离和JPA实体锁都是并发控制机制。transactionisolation应用于JDBC连接级别,范围是事务生命周期本身(您不能更改与当前正在运行的事务的事务隔离)。现代数据库允许您同时使用2PL(two-phaselocking)隔离级别和MVCC那些(SNAPSHOT_ISOLATION
是否可以在Java中对文件系统进行XA事务访问?我想在事务边界内操作文件,并且我的事务必须通过JTA参与分布式事务(所以我想文件系统需要作为XAResource进行访问)。我不需要支持细粒度的读/写文件访问;将每个文件视为记录足以满足我的需要。有没有人知道已经有这样做的开源项目?我不想实现这个烂摊子只是为了发现它已经完成了......我听到一些谣言说JBossTranscations将增加对此的支持(参见示例thisdiscussion),但找不到关于此的官方声明。顺便说一下,如果您需要事务性文件访问但不需要事务参与两阶段提交,我建议您看一下ApacheCommonsTransacti
为什么我的交易不活跃?我有这条消息:“javax.persistence.TransactionRequiredException:执行更新/删除查询”我找不到原因应用上下文:-->DAO实现@ComponentpublicclassUserDaoImplimplementsUserDao{@PersistenceContext(unitName="punit")privateEntityManagerem;protectedUserDaoImpl(){}//otherovverrideslikefind,get@Override@Transactionalpublicvoiddele
我在AppEnginejavajdo中有一个跨组事务。它在本地开发应用引擎服务器上运行良好。但是,从单元测试中,我得到一个java.lang.IllegalArgumentException:transactionsonmultipleentitygroupsonlyallowedinHighReplicationapplications。是否可以使用LocalServiceTestHelper模拟高复制应用程序?我正在使用1.6.6。这是我的类(class),您可以按原样运行它以重现:publicclassDs2Test{privatefinalLocalServiceTestHel
我的@Transactionnal注释似乎被忽略了。我在Spring容器的初始化上没有错误。看来我的方法还没有被SpringTX框架代理。在执行我的服务方法期间,JDBCTemplate抛出了预期的RuntimeException。问题是JDBC连接没有回滚,更改仍然存在。堆栈跟踪没有显示应该包装我的服务方法的代理的任何迹象。编辑:添加了Controller的代码编辑2:添加了服务的接口(interface)这是我的服务界面。publicinterfaceApplicationsService{publicApplicationgetApplicationById(intid);pub
在我的公司,不鼓励使用Spring框架,而是提倡使用JavaEE6。但最近我在Using@Transactional阅读了有关Springs@Transactional注释的信息。并认为这对我们的代码非常有用。据我所知,使用@Transactional注释的方法将重用一个已经存在的事务,或者如果在调用该方法时不存在Activity事务则打开一个新事务。JavaEE6中是否有类似的东西(例如,类似的注释)可用? 最佳答案 EJB组件在JavaEE中具有这种事务控制。您可以将EJB上方法的事务设置为Required、RequiresNe
考虑一下我正在使用的一些代码的简化View:@Stateless(...)@Remote(...)@TransactionAttribute(TransactionAttributeType.MANDATORY)publicclassFirstEjbType{@EJB(...)privateSecondEjbTypesecondEjb;@EJB(...)privateThirdEjbTypethirdEjb;publicvoiddoSomething(){secondEjb.doSomething();//WRITESSOMETHINGTOTHEDATABASEthirdEjb.doS
这是示例spring上下文文件的一部分。我正在尝试为SampClass创建事务建议以在保存方法上执行。所以根据我的理解,它应该只为SampClass创建一个代理。我有一个SearchDispatchRpcGwtServlet,它以一个web服务客户端作为参数,它本身也是一个代理。此bean也由于某种原因而被代理,但由于无法创建代理的代理而失败。我必须补充一点,SearchDispatchRpcGwtServlet创建了一个SampClass的实例并调用了保存方法。我得到以下异常:java.lang.IllegalArgumentException:Cannotsubclassfinal
在REQUIRED传播的情况下,当调用方方法本身是事务性的时,如果它们不同,当前方法是否会覆盖封闭的事务属性(例如rollbackFor)?插图:ClassA{@Transactional(propagation=Propagation.REQUIRED,rollbackFor={SomeException.class})voidfoo(){try{b.bar();}catch(OtherExceptione){//isthetransactionmarkedasrollback-onlyatthispoint?}}}ClassB{@Transactional(propagation=
我们有一个基于Spring的Web应用程序,它利用Hibernate将其实体加载/存储到底层数据库。由于它是一个后端应用程序,我们不仅希望我们的UI还允许第三方工具手动启动数据库事务。这就是为什么调用者需要调用StartTransaction方法,然后获取他们可以引用的ID参照该ID进行所有DB相关调用(如创建、修改、删除),明确哪些操作属于启动的事务调用CommitTransaction方法向我们的后端发出信号,表明现在可以提交事务(或者在否定情况下将调用RollbackTransaction)因此请记住,所有数据库处理都将由Java持久性注释在内部完成,我们如何向我们的UI开放事务