gpt4 book ai didi

java - TransactionAttributeType.NOT_SUPPORTED 对检索实体有意义吗?

转载 作者:行者123 更新时间:2023-12-03 23:08:49 25 4
gpt4 key购买 nike

有没有TransactionAttributeType.NOT_SUPPORTED每个数据库查找方法都有意义吗?如果不执行更新,我认为附加实体没有意义。

@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
pubic List<AnEntity> getListEntities(){
TypedQuery<AnEntity> query = em.createNamedQuery("AnEntity.myQuery",AnEntity.class);
return query.getResultList();
}

它仍然在缓存中结束吗?

唯一一次似乎有用的时候 REQUIRED事务传播是在需要更新时:
 @TransactionAttribute(TransactionAttributeType.REQUIRED)
public void editPersonName(Integer id, String newName){
AnEntity anEntity= em.find(AnEntity.class, id);
anEntity.setName(newName);
}

除此之外,我真的不明白这一点。

最佳答案

不,使用 NOT_SUPPORTED 没有意义只读查询的事务传播,但使用默认值 REQUIRED 很有意义交易传播。您还需要一个用于读取数据的事务。无论您是否指定,数据库始终使用事务。
使用显式事务允许您将多个语句组合到一个事务中,并且,如果您使用的是 Hibernate,则可以避免激进的连接释放开销。
仅仅因为 JPA 允许您在没有事务的情况下执行读取查询,并不意味着您必须这样做。NOT_SUPPORTED当您想要在当前事务范围之外执行服务方法时,模式很有用,并且对于根本不需要事务的方法(例如发送电子邮件)很有用,这样您就可以避免启动/结束事务上下文的开销.

关于java - TransactionAttributeType.NOT_SUPPORTED 对检索实体有意义吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35263091/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com