1.概述
有些公司可能禁止在代码中使用@Transactional声明式事务主要是出于以下考虑:
-
长事务问题:
如果一个方法中存在较多耗时的操作,很容易引发长事务的问题,长事务会带来锁的竞争和性能的消耗,同时也会导致数据库连接池耗尽,影响程序的正常执行。 -
嵌套调用混乱
:如果方法存在嵌套调用,子方法也加了@Transactional声明式事务,这时候就出现了事务嵌套的行为,容易引发事务的混乱,造成程序结构运行异常
。 -
@Transactional声明式事务是将事务控制逻辑放在注解里面,如果项目中的复杂度增加,事务的控制可能变的更加复杂。导致代码的可读性和维护性下降。
-
统一事务管理:
在大型企业应用中,往往会使用分布式事务管理器(如XA事务)来管理跨多个数据库、消息队列等资源的事务。这要求开发团队使用统一的事务管理框架来实现事务的一致性和隔离性,而不是依赖@Transactional注解