【问题标题】:Closing EntityManager after each db operation when using HikariCP使用 HikariCP 时在每次 db 操作后关闭 EntityManager
【发布时间】:2021-01-26 12:04:11
【问题描述】:

我正在使用 EntityManager 和 HikariCP 进行数据库操作。每次操作后是否需要关闭实体管理器? 每个请求只有一个数据库操作

@Autowired
@PersisitentContext(unitname="datasource2")
private EntityManager entityManager

function() {

entityManager.createQuery(......);

entityManage.close(); // Is this required???



}

【问题讨论】:

    标签: java spring-boot hibernate entitymanager hikaricp


    【解决方案1】:

    是的,您需要在从创建它的方法返回之前关闭它。一种常见的方法是将 EM 嵌入到 try/catch/finally 块中,调用 em.close();在 finally 的情况下。

    【讨论】:

    • EntityManger 实例未在函数中创建。它是自动装配的,是一个类变量。
    • 在这种情况下,容器为我们创建了 EntityManager,这意味着容器负责开始事务,以及提交或回滚事务。同样,容器负责关闭 EntityManager,因此无需手动清理即可安全使用。即使我们尝试关闭容器管理的 EntityManager,它也应该抛出 IllegalStateException。
    猜你喜欢
    • 1970-01-01
    • 2016-12-23
    • 1970-01-01
    • 2017-03-09
    • 2020-09-22
    • 2012-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多