实用程序 class:EJB 会话还是简单对象?

Utility class : EJB Session or Simple Object?

我正在开发一个基于 EJB 的应用程序,其中我有 JpaUtility 实用程序 class。要实现它,我有两个选择:

/* 简单对象实用程序 */

public class JpaUtility
{
public static List<T> getAll(EntityManager manager, Class<T> clazz) {
        return manager.createQuery("...."); }
}

/* EJB 实用程序 */

@Stateless
public class JpaUtility
{
@PersistentContext
private EntityManager manager;
public static List<T> findAll(Class<T> clazz) {
        return manager.createQuery("...."); }
}

问题是:哪一个提供最好的性能?简单对象还是 EJB 无状态?换句话说,与简单对象相比,EJB 提供了什么?

您想要完成的事情看起来像 'Generic Pattern DAO',AdamBien there.One 有很多 "ready" 实现:"Generic CRUD Service" 更详尽,消除了对自定义解决方案的需求并接近 Apache DeltaSpike 的 Spring 模板的简单性:DeltaSpike Data module

现在回到你原来的问题,EJB 或 POJO,在你的情况下,当在 EE 容器中工作时使用实体管理器,必须 "container managed",所以你的 "correct" 选项是 EJB或 CDI 但不是普通的非托管 POJO。