spring编程式事务和声明式事务的区别

2024-11-28 13:19:38
推荐回答(1个)
回答1:

1.选择编程式事务管理还是声明式事务管理:
当你只有很少的事务操作时,编程式事务管理通常比较合适。例如,如果你有一个Web应用,其中只有特定的更新操作有事务要求,
你可能不愿使用Spring或其他技术设置事务代理。这种情况下,使用 TransactionTemplate 可能是个好办法。
只有编程式事务管理才能显式的设置事务名称。
另一方面,如果你的应用中存在大量事务操作,那么声明式事务管理通常是值得的。它将事务管理与业务逻辑分离, 而且在Spring中配置也不难。
我们的开发中,一般使用到事务的地方比较少,我觉得,编程式事务足够了。
使用声明式事务,对我们这种对速度要求较高的应用中。反而会带来性能问题。

2:推荐事务处于一个较高层次,比如service上的某个函数(尤其是像我们这种sns而不像和钱挂钩的金融系统,对数据精确性要求不是很高的的应用),
而底层的dao可以不考虑事务(一般情况下,数据库自身的默认事务管理级别,就可以处理),否则可能会出现事务嵌套,增加程序复杂度。
事务往往和业务规紧密关联,当业务逻辑发生改变,意味着dao的大幅度改动。系统规模达到一定程度,修改风险相当大。
Spring事务的好处是不更改现有的dao,仅需对现有的service bean 进行配置或者尽量少的修改就达到事务效果了。
同时,把事务统一在service层,系统结构更清晰。