【问题标题】:Basic Hibernate Caching Question基本的 Hibernate 缓存问题
【发布时间】:2011-02-11 14:30:48
【问题描述】:

如果我所做的只是批量插入,Hibernate 是否使用缓存(二级或其他)? 没有从数据库请求实体,也没有使用生成器。 另外,StatelessSession vs Session 会改变答案吗?如果我使用 JDBC 批处理大小为 50 的 Session 会怎样?我将使用的缓存是 Ehcache

【问题讨论】:

    标签: java hibernate orm caching ehcache


    【解决方案1】:

    如果我所做的只是批量插入,Hibernate 是否使用缓存(二级或其他)?

    新插入的实体实例在刷新到数据库之前缓存在 L1 缓存(会话级缓存)中(参见13. Batch processing 部分),因此需要flush和clear您的会话定期以防止OOM。

    另外,StatelessSession 与 Session 会改变答案吗?

    是的。正如13.3. The StatelessSession interface 部分所述:StatelessSession 没有与之关联的持久性上下文,并且不提供许多更高级别的生命周期语义。特别是,无状态会话不实现一级缓存,也不与任何二级缓存或查询缓存交互。

    如果我使用 JDBC 批处理大小为 50 的 Session 会怎样?

    这只是意味着您应该在每 50 次插入时 flush/clear 会话。

    【讨论】:

      猜你喜欢
      • 2011-07-22
      • 2017-05-12
      • 1970-01-01
      • 1970-01-01
      • 2011-04-14
      • 2014-10-18
      • 1970-01-01
      • 2021-10-03
      • 2019-06-11
      相关资源
      最近更新 更多