栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

用于简单CRUD的EJB 3会话Bean设计

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

用于简单CRUD的EJB 3会话Bean设计

不知道您在谈论什么博客条目:)但是在您的特定情况1下,我可能会使用单个会话bean来实现类似于以下内容的接口:

public interface GenericCrudService {    public <T> T create(T t);    public <T> T find(Class<T> type, Object id);    public <T> void delete(T t);    public <T> T update(T t);    public List findWithNamedQuery(String queryName);    public List findWithNamedQuery(String queryName, int resultLimit);    public List findWithNamedQuery(String namedQueryName,   Map<String, Object> parameters);    public List findWithNamedQuery(String namedQueryName,   Map<String, Object> parameters,  int resultLimit);    public <T> List<T> findWithNativeQuery(String sql, Class<T> type);}

Bean将如下所示:

@Stateless@Remote(GenericCrudService.class)@TransactionAttribute(TransactionAttributeType.MANDATORY)public class GenericCrudServiceBean implements GenericCrudService {    @PersistenceContext    private EntityManager em;    @Override    public <T> T create(T t) {        em.persist(t);        return t;    }    @Override    public <T> T find(Class<T> type, Object id) {        return em.find(type, id);    }    @Override    public <T> void delete(T t) {        t = em.merge(t);        em.remove(t);    }    @Override    public <T> T update(T t) {        return em.merge(t);    }    @Override    public List findWithNamedQuery(String queryName) {        return em.createNamedQuery(queryName).getResultList();    }    @Override    public List findWithNamedQuery(String queryName, int resultLimit) {        return em.createNamedQuery(queryName).setMaxResults(resultLimit)     .getResultList();    }    @Override    public List findWithNamedQuery(String namedQueryName,  Map<String, Object> parameters) {        return findWithNamedQuery(namedQueryName, parameters, 0);   }    @Override    public List findWithNamedQuery(String namedQueryName,  Map<String, Object> parameters,  int resultLimit) {        Query query = this.em.createNamedQuery(namedQueryName);        if(resultLimit > 0) { query.setMaxResults(resultLimit);         }        for (Map.Entry<String, Object> entry : parameters.entrySet()) { query.setParameter(entry.getKey(), entry.getValue());        }        return query.getResultList();    }    @Override    @SuppressWarnings("unchecked")    public <T>  List<T> findWithNativeQuery(String sql, Class<T> type) {        return em.createNativeQuery(sql, type).getResultList();    }}

也可以看看

  • Java EE 5的通用CRUD组件
  • 不要重复DAO!-使用Hibernate和Spring DAO构建通用的类型安全DAO

1大多数应用程序不应将原始CRUD直接暴露给客户端,而应将CRUD屏蔽在实现业务规则并封装对域存储(

EntityManager
)访问权限的服务之后。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/399990.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号