将EntityManager对象传递给所有BusinessLayer方法

时间:2014-11-27 11:07:07

标签: java jpa transactions entitymanager

我想知道是否将对EntityManager对象的引用传递给我的所有BusinessLayer方法是反模式还是否。

public void setCost(EntityManager em, int idProduct);

public void updateProduct(EntityManager em, ProductEntity product);

我发现这种模式很实用,因为它让我可以管理多种方法的分组来构建个性化交易......

public void initProduct(EntityManager em, ProductEntity product) {
    ...
    tx.begin()
    ...
    setCost(em, idProduct);
    updateProduct(em, product);
    ...
    tx.commit(); 
}

PS:

  • 我没有使用Spring Framework。
  • 基于JPA的业务层和数据访问层旨在实现 用于桌面应用程序。

由于

1 个答案:

答案 0 :(得分:1)

将它作为参数传递似乎是不必要的努力,因为您可以通过@PersistenceContext更轻松地注入它。

或者,如果您没有依赖注入容器,您可能希望以其他方式转换责任。不要将EntityManager作为参数传递,而是让实现从某个地方获取它(例如JNDI)。