3

我想知道 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范围生成的。

4

1 回答 1

1

我认为有趣的问题。出乎意料的是,我想不出任何使这些课程特别的东西。因此,我会将它们@ApplicationScoped作为一个新实例,其功能与我刚刚丢弃的实例完全相同。不确定它会对堆产生任何明显的影响,可能不会,但如果它们必须重新创建很多?

我认为从概念上感觉更适合你的东西很好。

于 2013-03-24T00:43:19.153 回答