如果方法不保留任何实体,是否可以TransactionAttributeType.NOT_SUPPORTED



如果我有嵌套的bean方法,它只是从数据库中获取数据。(即获取 API(。那么将所有 bean 方法标记为 TransactionAttributeType.NOT_SUPPORTED 会有益吗?它是否有助于提高性能,因为 JTA 不为此管理任何交易?

这正是

使用NOT_SUPPORTED的目的,以提高性能。正如甲骨文所说:

不支持的属性

如果客户端在事务中运行并调用 企业 Bean 的方法,容器挂起客户端的 调用方法之前的事务。方法有后 完成后,容器将恢复客户端的事务。

如果客户端未与事务关联,则容器会 在运行该方法之前不启动新事务。

对不需要的方法使用 NotSupported 属性 交易。由于事务涉及开销,因此此属性 可以提高性能

因此,它非常适合所有选择查找业务方法,其目的可能是在屏幕上填充数据表。

如果存在使用事务上下文调用会导致异常的处理,则NOT_SUPPORTED很有用。例如,在 XA 处理的上下文中调用包含 DDL 代码的存储过程将导致发生异常。如果更改存储过程不是一个选项NOT_SUPPORTED请使用属性作为解决方法,并在调用包含有问题的存储过程的方法之前挂起事务。

如果在只读事务中使用 SUPPORT 中允许事务回滚,如果在只读事务使用NOT_SUPPORTED中不允许事务回滚。

这篇文章说:"不,对只读查询使用 NOT_SUPPORTED 事务传播是没有意义的"。这是JPA专家Vlad Mihalcea写的。

TransactionAttributeType.NOT_SUPPORTED检索实体是否有意义?

最新更新