gpt4 book ai didi

java - 默认的Hibernate(5.2.5) session 级缓存查杀性能是多少?

转载 作者:行者123 更新时间:2023-12-01 18:00:50 24 4
gpt4 key购买 nike

我不确定观察到的这种效果是否是由于 Hibernate 的 session 缓存造成的,但在我看来是这样的。我目前正在针对存储在 SSD 上的 H2 (v1.4.x/MVCC) 数据库后端运行测试单元。我正在插入 10k+ 行,“纯”JPA 的性能非常差,并且我有一个 CPU 以最大速度运行,以每秒 200-300 的速度插入“常规”行。现在有趣的部分是:当我将每个插入语句('em.persist(...)')包装到一个单独的事务中,并在提交后立即将持久化对象从实体管理器中“分离”时,速度提高了十倍。不知何故,Hibernate 似乎忘记转储持久对象并在没有任何可检测限制的情况下累积它们。

为什么默认性能如此糟糕?真的没有人关心这个吗?或者我在这里做错了什么?

出于某种原因,Hibernate 提示 JDBC 连接最初未处于自动提交模式。这有关系吗?

最佳答案

Hibernate seems to forget dumping persisted objects

不,它不会忘记任何事情。它故意在 session 中对它们进行管理,因为不这样做会违反它自己的契约:您应该能够在持久化托管对象后对其进行修改,并将这些更改保存在数据库中。如果 JPA 返回分离的对象,它将毫无用处。

这不应该阻止您在需要时显式分离它们,as the documentation suggests doing当您需要插入大量元素时(这不是 Hibernate/JPA 设计的用例)。

关于java - 默认的Hibernate(5.2.5) session 级缓存查杀性能是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41077920/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com