关闭 entityManager 的最佳方式

Best way to close an entityManager

我有以下代码:

    public Category findCategoryById(Long id) {
      EntityManager em = emf.createEntityManager();
      try {
          em.getTransaction().begin();
          Category category = categoryDAO.findCategoryById(em, id);
          em.getTransaction().commit();
          return category;
      } catch (Exception e) {
          throw e;
      } finally {
          em.close();
    }
  }

我正在我的控制器中处理异常,但我想确保实体管理器已关闭。我不喜欢我正在捕获并重新抛出错误。我希望能找到更好的建议。

谢谢

最好的办法就是不用在意。如果您的 Entity Manager 容器管理的 (例如,如果您正在使用 ejbspring 并且您没有强制执行特定的 bean/application 托管行为)你应该让容器处理事务的 opening/close 并且通常要担心你的持久性上下文。它更容易、更安全,并且在排除非常具体的情况下更好。 Entity Manager 的手动关闭应仅在 应用程序管理上下文 的情况下由您直接处理,以避免连接池耗尽或其他问题。