【问题标题】:When should we close the EntityManagerFactory?我们什么时候应该关闭 EntityManagerFactory?
【发布时间】:2011-03-21 23:57:51
【问题描述】:

我是 ORM 的新手。我刚开始阅读有关使用 Hibernate 的 Java Persistence API 的书籍和文档。

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

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

【问题讨论】:

  • 如果一个 EM 持有连接,如果“主机”或“父级”关闭,连接如何保持打开状态?这有意义吗?

标签: java hibernate jpa orm


【解决方案1】:

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

这并不完全正确,但关闭EntityManagerFactory 将更接近于破坏整个连接池。如果你想考虑JDBC连接,你应该考虑EntityManager

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

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

EntityManagerFactory 是一次性创建的,您通常会在每个请求中获得一个 EntityManager,它在请求结束时关闭(EntityManager 每个请求是多用户客户端最常见的模式/服务器应用程序)。

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

正如所暗示的,EntityManager 实际上与a 数据库连接相关联,关闭EntityManager 实际上会释放 JDBC 连接(通常,将其返回到池中)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-08
    • 2012-12-23
    • 2021-07-13
    • 1970-01-01
    • 1970-01-01
    • 2021-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多