如果我在Spring.Net中使用基于属性的事务,那么看起来像
[Transaction()]
public void MyBusinessMethod()
{
// doing some in memory calculation, may take some time
Prepare();
// actual db access code
DbAccess();
}
在该方法中,Prepare()
将在不涉及数据库层的情况下进行一些准备工作。为获得最佳性能,应在DbAccess()
之前打开数据库连接。但是,由于我使用AOP来执行事务并且它在方法级别应用,这是否意味着在调用方法MyBusinessMehtod
时将打开连接?如果是,有什么办法可以改善吗?我能想到的一种方法是将DbAccess
分解为自己的方法。除此之外,还有其他好的建议吗?
答案 0 :(得分:0)
一种选择是实现一个简单的“事务范围”类,它明确地开始Spring事务(使用程序化事务管理)。这还允许对事务会话进行额外管理,例如触发验证逻辑等。
另一个(更简单的)选项是重构您的方法,以便从特定于事务的方法调用DbAccess(您可能还将其他事务工作分组)或将属性移动到DbAccess。