如果我有嵌套的bean方法,它只是从数据库中获取数据。(即GET API)。那么将所有bean方法标记为TransactionAttributeType.NOT_SUPPORTED
会有好处吗?因为JTA没有为此管理任何事务,这会有助于提高性能吗?
这正是使用< code>NOT_SUPPORTED来提高性能的目的。事实上,甲骨文声明:
不支持的属性
如果客户端在事务中运行并调用企业 Bean 的方法,则容器会在调用该方法之前挂起客户端的事务。方法完成后,容器将恢复客户端的事务。
如果客户端未与事务关联,则容器不会在运行该方法之前启动新事务。
对不需要事务的方法使用NotSupported属性。因为事务涉及开销,所以该属性可以提高性能。
因此,它非常适合所有选择或查找业务方法,其目的可能是在屏幕上填充数据表。
如果有一个处理在使用事务上下文调用时会导致异常,则NOT_。例如,在XA处理上下文中调用包含DDL代码的存储过程将导致发生异常。如果更改存储过程不是一个选项,请使用not_SUPPORTED属性作为解决方法,并在调用包含问题存储过程的方法之前挂起事务。
如果在只读事务使用SUPPORTS中允许事务回滚,如果在只读事务使用中不允许事务回滚NOT_SUPPORTED。
本文说:“不,在只读查询中使用NOT_SUPPORTED事务传播是没有意义的”。这是由JPA专家弗拉德·米哈尔恰撰写的。
确实TransactionAttributeType。NOT_SUPPORTED对于检索实体有意义吗?