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