Tag: rollback

Sybase中的JDBC事务控制

需要JAVA中JDBC事务控制机制的帮助。 问题: 我们的Sybase DB中有一些存储过程需要在Unchained模式下运行。 由于我们正在更新两个不同数据库(不幸的是,两个Sybase)的数据,因此如果出现任何故障,我们需要能够回滚所有先前的事务。 但是使用Unchained Mode(自动提交 – 启动)运行并没有帮助我们进行回滚,因为一些SP已经提交了事务。 Connection connection = getConnection(); PreparedStatement ps = null; try{ String sql = getQuery(); // SQL Chained Mode ps = connection.prepareStatement(sql); ps.executeUpdate(); //Step 1 . . sql = getTransctionQuery(); // SQL Unchained Mode connection.setAutoCommit(true); //Step 2 ps = connection.prepareStatement(sql); ps.executeUpdate(); connection.setAutoCommit(false); . . sql = getQuery(); // […]

Spring数据和mongodb – 在@Transactional中简单回滚弹簧

我有2个存储库,一个用于mongodb(DocumentRepository),另一个用于hibernate实体(EntityRepository) 我有一个简单的服务: @Transactional public doSomePersisting() { try { this.entityRepository.save(entity); this.documentRepository.save(document); } catch(…) { //Rollback mongoDB here } } 是否可以在“// Rollback mongoDB here”行回滚mongoDB? 我已经从实体部分回滚(Transactional annotation)

@Transactional的奇怪行为(propagation = Propagation.REQUIRES_NEW)

这是我的问题: 我正在Java EE / Spring / Hibernate应用程序上运行批处理。 该批次调用method1 。 此方法调用一个可以抛出UserException (一个扩展RuntimeException的类)。 它是这样的: @Transactional public class BatchService implements IBatchService { @Transactional(propagation=Propagation.REQUIRES_NEW) public User method2(User user) { // Processing, which can throw a RuntimeException } public void method1() { // … try { this.method2(user); } catch (UserException e) { // … } // … } } 在执行继续时捕获exception,但在事务关闭时在method1结束时抛出RollbackException。 […]

事务回滚和Web服务

给出从会话bean调用两个Web服务方法的示例,如果在对两个方法的调用之间抛出exception,该怎么办? 在不调用Web服务的情况下,事务将回滚并且不会造成任何损害。 但是,Web服务不会回滚。 当然,即使使用单一的Web服务也存在问题。 虽然这是一个通用问题,但我对与EJB会话bean有关的解决方案感兴趣。 一个简单而定制的答案是为Web服务为每个“真实function”方法添加一个特殊的“回滚方法”。 我要求的是一些标准化的方法。