java - 基本的 Hibernate 缓存问题

标签 java hibernate orm caching ehcache

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

最佳答案

Doe Hibernate use cache (second level or otherwise) if all I am doing is batch inserts?

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

Also, would StatelessSession vs Session change the answer?

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

What if I was using a Session with a JDBC batch size of 50?

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

关于java - 基本的 Hibernate 缓存问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2700047/

相关文章:

java - JPA/Hibernate 代理未获取真实对象数据,将所有属性设置为空

java - org.hibernate.exception.ConstraintViolationException : Could not execute JDBC batch update

从批处理文件运行时,Java Jar 文件不发送电子邮件?

JAVA - jms,浏览大文本消息速度缓慢

java - 为什么我从 Hibernate 多对多关系(外键约束)中得到 java.sql.SQLIntegrityConstraintViolationException

go - 在 Golang 中构建动态(条件)WHERE SQL 查询

php - 使用 Eloquent orm 和 mysql 的连接太多

php - 如何与Yii2 faker数据库关联

JSON到XML转换的Java实现

java - 如何使用 java 中的反射确定泛型类型的构造函数参数数量?