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

标签 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 框架。
  • 基于 JPA 的业务层和数据访问层旨在 在桌面应用程序中使用。

谢谢

最佳答案

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

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

关于java - 将 EntityManager 对象传递给所有 BusinessLayer 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27169162/

相关文章:

java - 如何显示 Jetty HTTPS 客户端可用的协议(protocol)和密码套件?

java - JPA - 无效的重复插入

c# - 在(不相关的?)事务中使用 IsolationLevel.ReadUncommitted 时,SqlDependency 订阅不起作用

c# - 完全托管的数据库解决方案?

mysql - 使用mysql启动两个独立的事务

java - j2se 或 Jakarta commons 中是否有将数字转换为数字数组的东西?

用于调用 REST 服务的 Java API

java - 所有应用内购买都会在五分钟内取消并退款(Alpha 测试)

java - 每个 DAO 中的 EntityManager 配置

java - 覆盖对主键列的@CollectionTable 引用