我想知道 CDI 中存储库类的最有效(就所需资源而言)范围是什么。想象以下场景:
@RequestScoped
//OR @ApplicationScoped OR @SessionScoped OR @ConversationScoped?
public class SomeRepository{
@Inject
private EntityManager em;
public SomeClass getSomeClassById(int id){
return em.createNamedQuery("getSomeClassById",SomeClass.class).
setParameter("id",id).getSingleResult();
}
}
该示例中的 EntityManager 是使用@RequestScoped
范围生成的。