问题标签 [entitymanager]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1063 浏览

java - 如何使用 JPA/hibernate EntityManager 和 EJB3.0 实现泛型?

我有一个 slsb 持有我的业务逻辑,如何使用泛型将以下三种方法更改为一种泛型方法?前两个是同一个数据库,第三个是不同的数据库。这些方法还需要与事务相关的进一步注释吗?

提前谢谢了。干杯!

0 投票
1 回答
2939 浏览

hibernate - Hibernate v3.6:EntityManager 方法“刷新”的问题

以下代码在调用“em.refresh(p)”时抛出异常:

在调试代码时,我们看到 Hibernate 没有在第 6 行将记录写入数据库。他确实做到了 - 在需要时,而不是更早。

在第 7 行,我们得到以下异常: 线程“main”中的异常 javax.persistence.PersistenceException: org.hibernate.HibernateException: 这个实例在数据库中还没有作为一行存在

当我们在第 6 行强制 Hibernate 将记录刷新到 DB 中时,执行 INSERT 并且不会发生错误。我们可以通过执行选择或强制刷新来做到这一点(有所有后果):

我的问题:“刷新”方法是否应该不强制 Hibernate 将记录写入数据库,就像之前放置的 select 或 flush 语句一样?(这可能是一个错误吗?)。

提前感谢您的回答。

皮埃尔

0 投票
1 回答
1893 浏览

orm - 如何在 EntityManager (JPA) L1 或 L2 缓存大小中设置限制

如何设置 L1 或 L2 缓存大小限制。我担心增加缓存大小。一种方法是为缓存定义超时,但我想知道是否可以限制缓存大小?

RGDS 纳维德

0 投票
2 回答
14075 浏览

java - JPA 2 - 在 JavaSE 中使用 EntityManager - 几个问题

我有几个关于在 JavaSE 环境中使用实体管理器的问题。

我正在使用存储库模式在数据库上执行我的 CRUD 操作。将有一个像这样的基础存储库类:

然后,我将拥有像 EmployeeRepository 这样的类来继承 Repository。这些存储库类将在我的服务层中创建。

这是初始化实体管理器的好方法吗?我开始认为它不是 - 似乎每个持久性单元应该只有一个实体管理器?在这种情况下,您将为您创建的每个存储库都有一个实体管理器……您将如何确保每个持久性单元只有一个实体管理器?另外,我注意到实体管理器和实体管理器工厂方法有一个 close 方法 - 什么时候应该调用它们?在服务器终止事件上?

如果您知道有关在 JavaSE 中使用 JPA 的任何良好资源,我将不胜感激。

谢谢!

0 投票
4 回答
28676 浏览

entitymanager - 在 Doctrine 2.0 实体中使用 EntityManager

我有 2 个实体:国家(id、名称)和映射(id、对象、internalId、externalId)。Country 和 Mapping 没有关联(因为 Mapping 不仅有国家的行)。我需要使用以下条件获取国家/地区的外部 ID:

  • country.id = mapping.internalId
  • mapping.object = 'country'

所以我计划在 Country 添加函数 getExternalId()

问题:

  1. 在实体内部使用 EntityManager 是一种好习惯吗?如果不是,请解释在我的情况下如何获取外部 ID?
  2. 也许可以使用 yaml 文件将 Country 和 Mapping 关联起来?

提前致谢!

0 投票
3 回答
8651 浏览

java - 我应该多久创建一次 EntityManager?

我有一个EntityManagerFactory可以创建一个(或多个)EntityManager实例的实例。我正在使用 Servlet 环境,并且我有一个 EntityManagerFactory 连接到 servlet(通过 servlet 上下文),它在 servlet 的生命周期内共享(因此,对于所有用户)。

我可以执行以下操作之一:

  • 为我的 servlet 的生命周期创建一个 EntityManager(例如在所有用户之间共享)
  • 为每个用户创建一个(以便每个用户在 HttpSession 中获得自己的)
  • 为每个 HTTP 请求创建一个(例如,通过实例化一个新请求并在doGet方法结束时将其关闭)

哪个最合适?创建 EntityManager 的成本高吗?如果我执行单个共享 EntityManager,是否有单个事务范围(即独立用户之间的更新可以提交其他更改)?

0 投票
2 回答
2564 浏览

java - 不使用 Spring 获取 EntityManager

我使用的是 hibernate 但不是 Spring,只是找到了hibernate-generic-dao。这个概念看起来不错,但是当我运行它时,我得到了一个 NPE,因为我没有调用 setEntityManager()。

如何在不使用 Spring 的情况下获取 EntityManager?

0 投票
3 回答
41808 浏览

java - 如何模拟EntityManager?

我需要模拟实体管理器以使测试服务层(在我的情况下是会话外观)独立于底层(在我的情况下是实体管理器)。

那么我怎么能做到这一点呢?我应该使用 dbunit 吗?我需要easy/j(Mock)吗?

0 投票
2 回答
156 浏览

java - 一个 entityManger 找到 entity ,另一个没有

我的程序中有一个非常奇怪的行为。我有 2 个类(LogIn 类和 CreateGame 类),我使用注释在每个类中注入了一个 EntityManager

在某些时候,我从 LogIn 类中的方法中使用 entitymanger.remove(user) 从数据库中删除了一个名为“user”的对象。业务逻辑是用户可以托管和加入游戏(同时),因此删除用户数据库中有关用户创建的游戏的所有条目都将被删除,并且所有显示用户加入的游戏的条目都将被删除还。

之后,我调用另一个函数,该函数使用 LogIn 类中的方法检查用户是否存在

令人惊讶的是,它找到了用户。之后,我调用 CreateGame 类中的一个方法,该方法尝试再次使用来查找用户

该类中的实体管理器无法找到用户(这是预期的结果,因为用户已被删除且不在数据库中)

所以问题是:为什么一个类中的实体管理器在另一个类中找不到用户(这是错误的)?有没有人遇到过同样的问题?

PS:当用户托管了一个由另一个用户(我们称他为 Buser)加入的游戏并且 Buser 制作了一个由当前用户加入的游戏时,就会出现此“错误”。

在这种情况下,通过删除用户,将删除游戏 1 并将用户从游戏 2 中删除,因此结果是

PS2:Beans 是 EJB3.0。这些方法是从委托类中调用的。委托类中的 bean 使用 InitialContext.lookup() 方法进行实例化。请注意,对于登录、创建、加入游戏,适当的委托类调用执行事务的对应 EJB。在 logOut 的情况下,委托调用 EJB 以注销用户,但因为必须完成其他事情(如上所述),此 EJB 调用其他 EJB(再次使用 lookup() ),它具有诸如 removegame()、removeUserFromGame() 之类的方法等等。在执行这些方法之后,用户将被注销。也许这与第一个实体管理器由委托调用但第二个来自 EJb 内部的事实有关,这就是为什么一个实体管理器可以看到不存在的用户而另一个不能?此外,所有方法都有 TRANSACTIONTYPE.REQUIRED

先感谢您

0 投票
1 回答
937 浏览

hibernate - EntityManager + Spring 事务性问题

我对概念有疑问,我想我在混合一些东西。我有一个带有 DAO 层的应用程序,这些 DAO 的实现使用 SessionFactory (Hibernate) 来执行 CRUD 操作,我还有一个服务层并使用 Spring 声明式事务管理我的工作单元,一切正常,我不确定是否使用 EntityManager 但似乎它所做的是管理我的工作单元(与我使用 Spring 所做的相同)。

我什么时候应该使用 EntityManager?使用它有什么好处?我为什么要使用它?

谢谢你。