当前位置: 首页 > 面试题库 >

我们什么时候应该关闭EntityManagerFactory?

阎修杰
2023-03-14
问题内容

我在ORM上还很新。我刚刚开始阅读有关使用Hibernate的Java Persistence API的书籍和文档。

我只是想知道,关闭EntityManagerFactory与jdbc数据库连接关闭类似吗?

我们是否应该在每次持久/更新/删除后关闭它?如果我们不关闭它,数据库连接会保持打开状态吗?


问题答案:

我只是想知道,关闭EntityManagerFactory与jdbc数据库连接关闭类似吗?

这并非完全正确,但关闭EntityManagerFactory则更可能破坏整个连接池。如果您想考虑JDBC连接,则应该考虑EntityManager

我们是否应该在每次持久/更新/删除后关闭它?

创建an
EntityManagerFactory是一项非常昂贵的操作,并且应在应用程序的整个生命周期内完成一次操作(您close可以在应用程序的结尾)。因此,不,您不应该为每个持久/更新/删除操作关闭它。

EntityManagerFactory一次对所有创建并那么通常可以EntityManager每个请求,这是在该请求的一端封闭(EntityManager每请求是针对多用户的客户机/服务器应用程序的最常见的模式)。

如果我们不关闭它,数据库连接会保持打开状态吗?

作为暗示,它的EntityManager,实际上是关联到 一个
数据库连接和关闭EntityManager将真正释放JDBC连接(最常见的,其返回到池)。



 类似资料:
  • 我在自定义视图的不同方法中多次使用同一个光标。我应该在每次使用后关闭光标还是可以一直打开直到视图被破坏?对于数据库也是一样,一旦创建了包含此视图的活动,就可以打开它吗?当活动被销毁时,它可以关闭吗?我不断收到一个错误“close()从未在数据库上显式调用过…”当我按照上述方法操作时。

  • 问题内容: 我正在使用’multiprocess.Pool.imap_unordered’如下 我需要打电话或之后的for循环? 问题答案: 不,您没有,但是如果您不再使用游泳池,那可能是个好主意。 Tim Peters在此SO帖子中致电或致电的理由很明确: 至于Pool.close(),您应该在永远不会将更多工作提交给Pool实例的情况下(且仅在)进行调用。因此,通常在主程序的可并行化部分完成时

  • 问题内容: 面试官问我: 什么是Observer,什么Observable时候应该使用它们? 我并不了解这些术语,因此当我回到家并开始使用GoogleObserver和Google搜索时Observable,从不同的资源中发现了一些要点: 1)Observable是一个类,Observer是一个接口。 2)Observable该类维护一个Observers的列表。 3)当一个Observable对

  • 问题内容: 我想知道如果不关闭ResultSet是否可以将其关闭?我有一个ResultSet已关闭异常,但是我确定我没有在任何地方关闭ResultSet。我的确切做法是,我使用ResultSet来执行SELECT查询,然后使用相同的ResultSet,因为此方法调用了ResultSet: 那么,另一个问题是:有没有一种方法可以确保打开ResultSet? 第三个问题:也许是问题所在,因为我从不关闭

  • 问题内容: 有什么区别?什么时候应该使用容量为1的对抗? 问题答案: SynchronousQueue更像是一个传递,而LinkedBlockingQueue仅允许单个元素。区别在于对SynchronousQueue的put()调用直到有相应的take()调用 才返回 ,但LinkedBlockingQueue的大小为1,则put()调用(对空队列)将立即返回。 我不能说自己曾经直接使用过Sync

  • 问题内容: 我对使用和翻译有疑问。我了解到,在模型中,我应该使用。但是还有其他地方我也应该使用吗?表单定义呢?它们之间是否存在性能差异? 编辑: 还有一件事。有时候,代替被使用。正如文档所述,仅在将字符串显示给用户之前,才将字符串标记为要翻译,并在可能的最新情况下进行翻译,但是我在这里有点困惑,这与功能相似吗?我仍然很难决定在模型和表格中应该使用哪个。 问题答案: ugettext() 与 uge