草庐IT

事务处

全部标签

java - Spring 事务不工作 + JAX WS + JDBC

我对这个问题有点生气。让我们检查是否有人实现了类似的东西。我有一个实现了8WS的Java8Web应用程序。其中一些WS,通过JDBCTemplate进行插入和更新(由于性能需要,Hibernate不是一个选择),如果执行崩溃并出现异常,我需要它们回滚。我在spring应用程序上下文文件(Tomcat的server.xml/context.xml中的jndi资源)中有以下数据源和事务管理器配置:另一方面,我有一个到数据库DBcontroller.class的唯一访问点,它有一个用于插入、删除和更新的通用方法:privateNamedParameterJdbcTemplatejdbcTem

java - XA/JTA 事务 : JMS message arrives before DB changes are visible

上下文是:生产者(JTA事务PT)正在向JMS队列发送消息并进行数据库更新;consumer(JTAtransactionCT)在同一个队列上监听并在收到消息时读取DB;应用服务器-WebLogic,数据库-Oracle。我观察到,有时CT(还?)无法看到PT的数据库更改,如果已收到相应的JMS消息(PTpromise了吗?)。似乎JTA不能保证这种一致性(这在JurgenHoller的演讲“TransactionChoicesforPerformance”中也得到了证实)。避免此类问题的最佳方法是什么(明显的除外-不使用JTA)?谢谢。 最佳答案

java - 服务层和 DAO 层中的 Spring 事务

在我的示例中,我有一个Hibernate实体和一个DAO。@Entity@Table(name="myEntity")publicclassMyEntity{@Id@GeneratedValue(strategy=GenerationType.IDENTITY)@Column(name="id")privatelongid;@Column(name="action")privateStringactionName;}...................@Repository("myDAO")@Transactional(propagation=Propagation.REQUIRED

java - EJB/JPA 事务边界

我在读EJBTransactionboundaryandTransactionboundary让我们专注于RequiresNewAttribute.这是链接中的修改图所以说method-B用RequiredNewattribute注释.所以根据理论当method-A电话method-B一个新的事务将开始,已经开始的事务将被暂停,当method-B返回新事务将被提交。现在考虑在S1部分我们使用entitymanager.persist()创建一个jpa实体现在我们将此实体传递给method-B其中设置了name实体的领域。现在当我们从method-B返回时怎么可能commitdb中的事务

java - 悲观锁与可序列化事务隔离级别

我有点理解实体锁定和事务隔离级别的用途,但无法区分悲观锁定和可序列化级别。据我了解,在这两种情况下,表都被锁定并且没有其他事务可以访问它,因此在这两种情况下,数据库都会采取防止并发修改的措施,这看起来没有区别。有人可以解释一下这里是否真的有区别吗? 最佳答案 (我不假设您使用的是ObjectDB。如果您编辑您的问题并包括您在JPA中使用的特定数据库,您可能会得到更好的答案。)我不喜欢乐观锁定和悲观锁定这两个术语。我认为乐观并发控制和悲观并发控制更准确。锁是处理并发控制问题最常用的方法,但不是唯一的方法。(Date在数据库系统简介中关

java - 从关闭文件方法抛出 IOException 时如何管理事务(包括文件 IO)

我最近开始使用Spring的数据源事务管理器。我现在有问题。我的事务包括对数据库表的更新和对文件的写操作。它工作正常,但我对文件I/O有一些疑问。正如您在下面看到的,我已经将我的bean的openFile和closeFile方法分别配置为init方法和destroy方法,这反过来又提供了这些方法,就像构造函数和析构函数一样被调用。如果文件没有正确关闭,一些记录可能没有成功写入output.txt文件,这意味着我也无法正确处理事务管理。但是,我想回滚那些尚未附加到平面文件的数据库更新。使用我的解决方案,似乎不可能将fileClose方法添加到事务中。有谁知道如何正确执行此所需操作?如有任

java - jOOQ 和 Spring 事务管理

我使用jOOQ3.8和SpringBoot1.4.1。我看到jOOQ使用一种机制来保证handlingoftransactions.如果我定义了一个注释为事务性的方法并且在执行两个插入时,它们是否在同一事务中执行,例如@Transactional(propagation=Propagation.MANDATORY)publicdoInsert(){DSL.using(configuration).insertInto(...);DSL.using(configuration).insertInto(...);}所有执行的insert在异常情况下会回滚吗?它们会在一笔交易中执行吗?或者,

java - 你如何重构@Transactional 方法来拆分非事务部分

我有一个作为独立Java应用程序的一部分运行的数据访问类。它目前正在工作,这意味着定义了一个事务管理器,但我想重构该类以减少事务的范围,但如果我这样做,我会得到org.hibernate.HibernateException:NoHibernateSessionboundtothread,andconfiguration不允许在此处创建非事务性,这意味着移动@Transactional以某种方式阻止了它被识别。我的原始版本的重构方法是私有(private)的,但我发现有人建议将其更改为公开的,因为在某些情况下注释不会被提取。publicclassDoStuff{@Transaction

java - 使用 EJB 计时器的 WebSphere 中的 Bean 事务超时

通过JBoss/Wildfly,可以使用@TransactionTimeout专有注释并为特定sessionBean定义事务超时。使用IBMWebSphere的等效方法是什么?我们正在使用EJBTimer,其中一个Bean需要一个多小时才能完成。Wildfly示例代码:importorg.jboss.ejb3.annotation.TransactionTimeout;@Stateless@TransactionTimeout(value=7200)publicclassTimerBean{}注意:使用WebSphere8.5。修改全局事务时间不是一个选项,我们需要为特定的sessio

java - Spring 事务中 REQUIRES_NEW 和 NESTED 传播行为的差异

前言首先:它不是Differencesbetweenrequires_newandnestedpropagationinSpringtransactions的副本-我读了它,但没有找到我的问题的答案问题:阅读我提到的主题后,我明白了物理交易计数中传播级别的主要区别:2dbtransactions-forREQUIRES_NEWforouterandforinnermethod1db事务-用于外部和内部方法的NESTED。如果底层数据库不支持保存点,它将无法工作但从我的观点来看,逻辑似乎是相同的。如何理解在实践中使用哪个级别?有什么用例可以理解吗?行为差异的方便示例?附言我想对于其他交易