我有一个Spring应用程序,其中Hibernate作为ORM,Oracle数据库作为RDBMS。假设我在数据库中的表名是entity_tbl,entity_seq是我的表的序列。在@Transaction的保存方法中,实体被保存,保存行后,我抛出回滚事务的异常。如下所示,@ServiceclassEntityServiceextendsGenericService{@AutowiredEntityRepositoryrepo;@Transactional@Overridepublicvoidsave(Entityentity){repo.save(entity);if(true)th
我需要使用JDBC和JMS队列在JavaSE中执行XA事务。我有weblogic服务器来查找资源。你能帮我写一些示例代码吗? 最佳答案 我无法提供代码,但是在WebLogic中使用JDBC和JMS资源进行两阶段提交时,您必须牢记这些事情...JMS常规设置配置JMS连接工厂以使用:weblogic.jms.XAConnectionFactory更多信息:http://docs.oracle.com/cd/E13222_01/wls/docs103/ConsoleHelp/pagehelp/JMSjmsconnectionjmscon
我有一个对对象集合进行操作的任务队列(为了举例,假设这些对象是地址簿中的条目)。一个示例任务可能是“将Joe的电话号码更新为888-555-1212”。队列中可能同时有多个“更新Joe的电话号码...”任务,但电话号码不同。在这种情况下,必须应用更新以确保最后的状态是正确的(不,为了争论,不可能在任务上加上时间戳,在地址簿条目上加上时间戳,然后扔掉过时的任务)。将Jane的更新与Joe的更新乱序应用是安全的。我想对队列进行多线程处理,但需要按人同步访问。有没有适合这种东西的方便的库?还是我只能使用Executor并在Runnable的run()方法中对“name”进行自己的同步?
Spring有3种典型的嵌套事务传播:REQUIRED、NEW和NESTED。隔离级别类型总是根据并发事务来描述。但是嵌套情况呢?从内到外以及从内到外的默认可见性是什么?设置隔离级别对这两者有何影响?是否可能有任何经验法则,例如“外部事务总是看到来自内部事务的更改,而不管隔离或传播类型”或“内部事务只有在设置为read_uncommited时才能看到外部事务的更改”。还是按要求设置等等?编辑:我不是在谈论实际的sql查询,而是持久性上下文。我的意思是,如果我创建一个资源并在嵌套事务模型的另一部分读取它,我是否会看到更改,而不管它是否实际持久化?一个很好的例子是事务性工作流程,它执行使用
如果我与@Cascade(CascadeType.SAVE_UPDATE)有一个@OneToMany关系,如下所示publicclassOne{privateIntegerid;privateListmanyList=newArrayList();@Id@GeneratedValuepublicIntegergetId(){returnthis.id;}@OneToMany@JoinColumn(name="ONE_ID",updateable=false,nullable=false)@Cascade(CascadeType.SAVE_UPDATE)publicListgetMany
背景我有一个Spring客户端应用程序,它使用RMI为两个服务器提供服务。在客户端中,我将一个实体保存到数据库中(简单),并使用实体的详细信息对两个服务器进行rmi调用。我在服务器上使用Spring3.0.2,客户端是一个简单的Spring-mvc站点。要求我的要求是,如果对服务器的任何rmi调用失败,整个事务将回滚,即实体不会保存在客户端上,如果任何一个rmi调用成功,这也会回滚。我对分布式事务比较陌生,但我想我想要一个使用RMI调用的类似XA的事务。我确实找到了关于这个主题的一个很好的链接here但它没有提到对不同服务器调用两个远程方法调用时的模式。我很想在推荐阅读方面听到更多关于
我将尝试在JPA事务隔离级别中描述我的问题。数据库结构:Table1->PK定义为日期('ddMMyyyy')Table2->FK到Table1JPA(隔离级别::read_commited)-代码:Queryquery=em.createQuery("fromTable1trdwheretrd.id=:d");query.setParameter("d",date);Table1t=null;try{t=(Table1)query.getSingleResult();}catch(javax.persistence.NoResultExceptione){t=null;}if(t==
我使用SpringBatch使用2个(可能更多,为简单起见假设2个)数据库。一个用于存储所有作业数据(所有BATCH_*表)。另一个用于实际运行我的业务逻辑数据。有些事情我不太明白。当我声明我的JobRepository时,我已经指定了我的TransactionManager,为什么我必须在我的tasklet上再做一次?(我不是故意使用默认名称的)我目前正在为tasklet提供与我的JobRepository相同的TrasactionManager,它管理与我在步骤中所做的不同的连接。这是否意味着我在作者或读者内部进行了自己的事务管理?如果#2为真,HowdoesSpringBatch
当我打算使用atomikos和hibernate传输一些数据时,我的应用程序一段时间后出现错误。2015-11-0607:11:56,353WARN[http-/0.0.0.0:8083-10]datasource.xa.XAResourceTransaction-XAresource'COTXADBMS':resumeforXID'31302E3235332E312E35322E746D30303030313030303939:31302E3235332E312E35322E746D31'raised-7:theXAresourcehasbecomeunavailable-(Slf4
同事们,我一个多星期都解决不了一个Spring事务的问题。我已经创建了非常相似的帖子(Whydatawasn'tsavedwhenIuse@Transactionalannotation?),但无法解决其中的问题;当然,我考虑了给@FlorianSchaetz的建议。我恳请你帮助我。所以,我有测试类:@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(classes=AppConfig.class,loader=AnnotationConfigContextLoader.class)@Transactionalpub