1

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

4

1 回答 1

3

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

新插入的实体实例在刷新到数据库之前会缓存在 L1 缓存(会话级缓存)中(请参阅第13 节。批处理),因此需要flushclear您的会话定期防止 OOM。

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

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

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

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

于 2010-04-23T16:33:02.997 回答