事务要如何开始?
事务应如何结束?
哪一个对象将负责开始一个事务?
哪一个对象将负责结束一个事务?
DAO 是否要负责事务的开始和结束?
应用程序是否需要通过多个 DAO 访问数据?
事务涉及到一个 DAO 还是多个 DAO?
一个 DAO 是否调用另一个 DAO 的方法?
了解上述问题的答案将有助于您选择最适合的 DAO 的事务界定策略。在 DAO 中有两种主要的界定
事务的策略。一种方式是让 DAO 负责界定事务,另一种将事务界定交给调用这个 DAO 方法的对象
处理。如果选择了前一种方式,那么就将事务代码嵌入到 DAO 中。如果选择后一种方式,那么事
务界定代码就是在 DAO 类外面。我们将使用简单的代码示例帮助您更好理解每一种方式是如何工
作的。
清单 1 显示了一个有两种数据操作的 DAO:创建和更新:
清单 1. DAO 方法
public void createWarehouseProfile(WHProfile profile); public void
updateWarehouseStatus(WHIdentifier id, StatusInfo status);
清单 2 显示了一个简单的事务。事务界定在 DAO 类外面。注意在这个例子中调用者是如何在一个
事务中结合多个 DAO 操作的。
清单 2. 调用者管理的事务
tx.begin(); // start the transaction dao.createWarehouseProfile(profile);
dao.updateWarehouseStatus(id1, status1); dao.updateWarehouseStatus(id2, status2);
tx.commit(); // end the transaction
这种事务界定策略对于需要在一个事务中访问多个 DAO 的应用程序特别有用。
评论11
最新资源