通常只有当你有少量的事务性操作时,编程式事务管理才是一个好主意。例如,如果你有一个 web 应用程序,只需要对某些更新操作进行交易,你可能不想通过使用 Spring 或其他技术来设置事物代理。在这种情况下,使用 TransactionTemplate 可能是一个好办法。能够明确地设置事务名称也是只有通过使用事务管理的程序化方法才能做到的。
另一方面,如果你的应用程序有许多事务性操作,声明式事务管理通常是值得的。它将事务管理从业务逻辑中分离出来,并且不难配置。当使用 Spring 框架,而不是 EJB CMT 时,声明式事务管理的配置成本会大大降低。