基本的Hibernate缓存问题

时间:2010-04-23 16:00:25

标签: java hibernate orm caching ehcache

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

1 个答案:

答案 0 :(得分:3)

  

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

新插入的实体实例在L1缓存(会话级缓存)中被缓存,然后才会刷新到数据库(请参阅13. Batch processing部分),因此需要{定期{1}}和flush您的会话以阻止OOM。

  

此外,StatelessSession vs Session会改变答案吗?

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

  

如果我使用的JDBC批量大小为50的会话怎么办?

这仅表示您应该每50次插入StatelessSession / flush会话。