问题标签 [transactions]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
5073 浏览

java - .NET 相当于现代 Java Web 架构

几乎每个新的 Java-web-project 都使用现代 MVC 框架,例如用于 Web 层的 Struts 或 Spring MVC,用于“服务”/业务逻辑层的 Spring,以及用于持久性的 ORM 映射器(例如 Hibernate)。.NET 中的等价物是什么?

我猜 ASP.NET 用于 Web 层,ADO.NET 用于持久性,但与 Spring 等价的是什么,即用于连接事务和组件等。

我知道 Spring.NET,但我对在 .NET 中构建应用程序的实际方式更感兴趣。

0 投票
4 回答
5885 浏览

java - Hibernate 和 Spring 事务 - 使用私有构造函数/静态工厂方法

我们有一个具有以下 Spring bean 的 Hibernate/Spring 应用程序:

在将应用程序连接在一起时,在我们的休眠实体中使用私有构造函数时会出现以下错误:

实体是典型的领域对象,例如员工等。

当将构造函数的可见性修饰符更改为包(或公共)时,应用程序运行良好,实体被存储/加载到数据库中。我们/我们如何使用私有构造函数/静态工厂方法和 Spring/Hibernate 事务管理?

我们使用 Hibernate 注释来映射实体/关系。在 applicationContext.xml 中没有为与问题相关的域类声明任何 bean 定义。它是一个 pojo,应该有一个静态工厂方法和一个私有构造函数。

我们如何让 Hibernate(我猜是 org.springframework.spring-orm.hibernate3 类)使用静态工厂方法而不是构造函数?或者如果必要的话可能让它调用一个私有构造函数?

使用 spring factory-method 配置是有意义的,但实体没有映射为我们的 applicationContext.xml 中的 bean。它们仅使用 @Entity 注释进行注释以实现 Hibernate 持久性。

希望这个编辑能澄清(而不是神秘化)这个问题。:)

0 投票
6 回答
17659 浏览

c# - TransactionScope 不回滚事务

这是我的事务范围源代码的当前架构。第三个插入引发 .NET 异常(不是 SQL 异常),它不会回滚前两个插入语句。我做错了什么?

编辑: 我从 insert2 和 insert3 中删除了 try/catch。我还从 insert1 try/catch 中删除了异常处理实用程序并放入“throw ex”。它仍然不回滚事务。

编辑 2:我在 Insert3 方法中添加了 try/catch,并在 catch 语句中添加了一个“throw”。它仍然不回滚事务。

更新:根据我收到的反馈,“SqlHelper”类是使用SqlConnection 对象建立与数据库的连接,然后创建一个SqlCommand 对象,将CommandType 属性设置为“StoredProcedure”并调用SqlCommand 的ExecuteNonQuery 方法。

我也没有将 Transaction Binding=Explicit Unbind 添加到当前连接字符串。我将在下一次测试中添加它。

0 投票
2 回答
712 浏览

java - 我如何确保使用 Hibernate 更新的值在我阅读它的同时没有被更改?

我有一个问题,我想使用 Hibernate 从数据库中读取一个对象,更改一个值,然后保存该对象。如果更改值需要一些时间,那么确保数据库中的基础对象没有更改的最佳方法是什么?我在一个事务(和一个会话)中执行此操作。

代码看起来像:

0 投票
3 回答
1179 浏览

.net - System.Transaction 隐式事务弄乱了我的其他连接

我正在尝试使用 System.Transaction.TransactionScope 创建一个事务来调用一些存储过程,但它似乎并没有自行清理。一旦事务完成(提交与否并且事务范围对象被释放),随后与数据库的连接将以可序列化的读取提交级别打开,而不是像通常那样进行读取提交。

我为每个调用打开和关闭一个连接(很好地关闭并返回到.NET 中的正常连接池),当我完成使用它进行事务处理时,我是否错过了一些显式重置连接的方法?我认为 System.Transaction.TransactionScope 背后的想法是隐藏所有复杂性。

所以我的代码如下所示:

我想这是正常的做法。但是,如果我查看 sqlserver profiler,我可以看到正在打开的连接

这会扰乱随后的非事务相关数据库活动,而且显然也没有那么快。我可以通过设置一个事务选项来明确地使用 ReadCommited 进行事务来解决这个问题,但在我看来,这不是此操作的理想行为。

我还尝试显式创建一个 Commitabletransaction 对象,创建显式新事务而不是使用环境事务,但仍然没有运气。

任何有关如何解决此问题的想法都将不胜感激,因为如果他们尝试使用 readpast 锁定提示,任何使用可序列化连接的调用都会引发错误。

0 投票
2 回答
1784 浏览

sql-server - ADO.NET 检查是否可以回滚

我问自己是否可以在 ADO.NET 中检查当前事务是否可以回滚。

msdn 建议以下实现:

另外还有一点需要注意:回滚事务时应始终使用 Try/Catch 异常处理。如果连接终止或事务已在服务器上回滚,则回滚会生成 InvalidOperationException。

但我真的不敢相信 try/catch 是检查是否可以回滚的推荐解决方案。

我知道在 SQL Server 实现中,如果事务是“僵尸”,则 SQLTransaction 对象在 Connection 属性上返回 null。

但这是非常具体的实现,它只适用于 SQL Server。

那么是否有一种独立于数据库的方法来检测事务是否可以回滚?

蒂亚·马丁

0 投票
3 回答
20951 浏览

java - 运行 Spring 单元测试的 AOP 问题

我有一个 Spring Web 应用程序,它被配置为使用 JDK 代理进行 AOP。AOP 注释(例如@Transactional)是在接口上声明的,而不是在实现类上声明的。

应用程序本身运行良好,但是当我运行单元测试时,它似乎试图将 CGLIB 用于 AOP 功能(而不是 JDK 代理)。这会导致测试失败 - 我在下面附加了堆栈跟踪。

我不明白为什么在运行测试时使用 CGLIB,因为 Spring 配置与应用程序运行时的配置基本相同。一个可能显着的区别是测试配置使用DataSourceTransactionManager而不是 JTA 事务管理器。测试类本身都扩展AbstractJUnit4SpringContextTests,难道这个类以某种方式硬连线以使用 CGLIB?

编辑:其中一位评论员要求我发布 Spring configuration。我以缩写形式将它包含在下面(即省略了不相关的 bean 和 XML 名称空间)。

spring-servlet.xml

applicationContext-service.xml

applicationContext-test.xml这仅在运行单元测试时包含。它的目的是覆盖在其他配置文件中声明的一些 bean。

0 投票
4 回答
6830 浏览

mysql - Rails 交易

我正在尝试使用ActiveRecord::Base.transaction. 我认为使用 Rails 1.2.6 和 mysql 5.0 默认情况下回滚不起作用。多玩一点,我发现autocommit在 mysql 连接中没有设置为 0。

问题:

1)如何禁用所有连接的rails中的自动提交?

2)它会对其他不必是事务性的代码产生一些负面影响吗?

0 投票
2 回答
3304 浏览

java - 关于使用 Terracotta 作为持久性解决方案

将 Terracotta 用作持久性解决方案(替换数据库)是个好主意吗?我特别想知道数据完整性问题和对事务系统的支持。

0 投票
5 回答
3779 浏览

c++ - 单个连接上的多个数据库事务

我有一个多线程程序,而每个线程在开始执行时从 MySql 连接池类获取单个连接。然后,该线程通过将其数据库连接传递给包装器类来使用许多数据库表包装器类来执行其业务逻辑。这些包装类上的操作不一定是顺序的,我希望这些包装类能够使用单个数据库连接相互独立地提交或回滚其数据库表上的更改。我知道 MySql 不允许嵌套事务并且还没有找到实现此目的的方法。任何帮助是极大的赞赏。谢谢!