2

如果我在 Spring.Net 中使用基于属性的事务,看起来像

[Transaction()]
public void MyBusinessMethod()
{
   // doing some in memory calculation, may take some time
   Prepare();

   // actual db access code
   DbAccess();
}

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

4

1 回答 1

0

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

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

于 2009-08-13T00:28:22.830 回答