gpt4 book ai didi

java - @PersistenceContext 如何保证线程安全?

转载 作者:搜寻专家 更新时间:2023-11-01 03:14:43 26 4
gpt4 key购买 nike

根据许多示例,可以像这样将 EntityManager 注入(inject) @Stateless 或 @Singleton EJB:

@Stateless // or @Singleton
public class MyRepository {
@PersistenceContext
private EntityManager em;
...
}

EJB 3.1 规范指出依赖注入(inject)仅在构造时执行,因此 MyRepository 的所有调用者都将使用相同的 EntityManager 实例。 EJB 容器如何确保使用正确的 EntityManager 实例?

最佳答案

我的理解是,@Stateless bean 永远不会被两个客户端同时使用;如果需要为多个客户端提供服务,容器将简单地创建同一 bean 的更多实例。

至于@Singleton bean,spec说默认情况下他们使用容器管理并发,其中容器使用方法 Lock s 并且可以在单例繁忙时以超时异常拒绝客户端。

编辑:此外,@PersistentContext 类型默认为事务范围(规范中为 16.11.1.1),因此 EntityManager 管理的所有实体在最后分离每笔交易。

关于java - @PersistenceContext 如何保证线程安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2015184/

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