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
スコープを使用して生成されます。