【问题标题】:How can I disable change tracking to prevent spring data from doing dirty checks and tracking changes for read only queries如何禁用更改跟踪以防止 spring 数据进行脏检查和跟踪只读查询的更改
【发布时间】:2017-08-11 08:12:53
【问题描述】:
在加载具有大量记录(例如 100000 条记录)的实体时,Spring Data 中是否有任何方法可以禁用跟踪更改(例如 EntityFramework)?我知道我们可以在 DB 上编写一个视图并将一个实体指向它。但它看起来过于复杂,因为在 EntityFramework 中您可以使用AsNoTracking()。
【问题讨论】:
标签:
java
hibernate
spring-data
spring-data-jpa
【解决方案1】:
看看 Hibernate 的StatelessSession。来自文档:
无状态会话不实现一级缓存,也不实现
与任何二级缓存交互,也不实现
事务性后写或自动脏检查,也不做
操作级联到关联的实例。集合被忽略
无状态会话。通过无状态会话执行的操作
绕过 Hibernate 的事件模型和拦截器。无状态会话
容易受到数据混叠效应的影响,因为缺乏
一级缓存。