如果我所做的只是批量插入,Hibernate 是否使用缓存(二级或其他)?没有从数据库请求实体,也没有使用生成器。另外,StatelessSession vs Session 会改变答案吗?如果我使用 JDBC 批处理大小为 50 的 Session 会怎样?我将使用的缓存是 Ehcache
问问题
362 次
1 回答
3
如果我所做的只是批量插入,Hibernate 是否使用缓存(二级或其他)?
新插入的实体实例在刷新到数据库之前会缓存在 L1 缓存(会话级缓存)中(请参阅第13 节。批处理),因此需要flush
和clear
您的会话定期防止 OOM。
另外,StatelessSession vs Session 会改变答案吗?
是的。如第13.3 节所述。StatelessSession 接口:AStatelessSession
没有与之关联的持久性上下文,并且不提供许多更高级别的生命周期语义。特别是,无状态会话不实现一级缓存,也不与任何二级缓存或查询缓存交互。
如果我使用 JDBC 批处理大小为 50 的 Session 会怎样?
这只是意味着您应该flush
/clear
会话每 50 次插入。
于 2010-04-23T16:33:02.997 回答