Transactions spring.net中的事务范围

Transactions spring.net中的事务范围,transactions,spring.net,Transactions,Spring.net,如果我在Spring.Net中使用基于属性的事务,那么 [Transaction()] public void MyBusinessMethod() { //进行一些内存计算可能需要一些时间 准备(); //实际数据库访问代码 DbAccess(); } 在该方法中,Prepare()将在不涉及数据库层的情况下执行一些准备工作。为获得最佳性能,应在DbAccess()之前打开数据库连接。但是,由于我使用AOP进行事务处理,并且它在方法级别应用,这是否意味着在调用方法myBusinessMeth

如果我在Spring.Net中使用基于属性的事务,那么

[Transaction()]
public void MyBusinessMethod()
{
//进行一些内存计算可能需要一些时间
准备();
//实际数据库访问代码
DbAccess();
}

在该方法中,
Prepare()
将在不涉及数据库层的情况下执行一些准备工作。为获得最佳性能,应在
DbAccess()
之前打开数据库连接。但是,由于我使用AOP进行事务处理,并且它在方法级别应用,这是否意味着在调用方法
myBusinessMethod
时将打开连接?如果是的话,有什么办法可以改进吗?我能想到的一种方法是将
DbAccess
分解为它自己的方法。除此之外,还有什么好的建议吗

一个选项是实现一个简单的“transaction scope”类,该类显式地开始Spring事务(使用编程事务管理)。这还允许对事务会话进行额外的管理,例如触发验证逻辑等


另一个(更简单的)选项是重构您的方法,以便从特定于事务的方法调用DbAccess(您也可以将其他事务工作分组在其中),或者将属性移动到DbAccess。

一个选项是实现一个简单的“事务范围”类,该类显式地开始Spring事务(使用编程事务管理)。这还允许对事务会话进行额外的管理,例如触发验证逻辑等


另一个(更简单的)选项是重构您的方法,以便从特定于事务的方法调用DbAccess(您也可以将其他事务工作分组在那里)或者将属性移动到DbAccess。

谢谢,如果我需要精确控制,我似乎必须以编程方式进行。谢谢,如果我需要精确控制,我似乎必须以编程方式进行