java - 防止休眠刷新只读操作
问题描述
我有一个繁重的操作,它是只读的。这一切都由休眠映射,在 Spring Boot 应用程序中。当没有任何类型的突变时,Hibernate 花费 6 秒刷新我的实体。这只是一个 get 操作。
我试图阻止休眠花费那 6 秒,冗余冲洗。
我将休眠刷新模式设置为手动/从不。但这没有任何区别。
该属性设置正确,但休眠状态仍显示刷新、计数和花费的时间。
解决方案
有几种方法可以做到这一点。您可以尝试:
org.springframework.transaction.annotation.Transactional
注释设置为只读:
@Transactional(readOnly = true)
在 Hibernate 的情况下,它将 JDBC 事务设置为只读模式和 FlushMode.NEVER。这里详细信息:https ://stackoverflow.com/a/1712328/5810648
此外,可以禁用setReadOnly(true)
对 Hibernate 查询的脏检查调用或setHint("org.hibernate.readOnly", true)
对 JPA 查询的调用。根据文档:
Hibernate 永远不会对它们进行脏检查或使更改持久化(例如 new Boolean(true) ),默认为 false
http://docs.jboss.org/hibernate/stable/entitymanager/reference/en/html/objectstate.html#d0e1215
另一种方法是对繁重的操作使用无状态会话。这是详细信息:https ://stackoverflow.com/a/5497077/5810648
推荐阅读
- python - 如何创建一个文件夹来存储来自网站抓取的图像
- youtube - youtube.com/get_video_info 返回 404
- java - 如何以命令设计模式注入存储库?
- strava - 让其他运动员参加集体活动?
- position - PineScript:头寸大小和使用杠杆
- python - Big Sur 使用似乎不存在的 SDK 进行编译:
- python - 使用定点小数精度格式化数字输出,同时仍删除尾随零?(Python 3.7.7)
- pyspark - 如何发送 json 配置文件作为 dataproc 上 pyspark 作业的一部分?
- python - 如何将str转换为int python
- kivy - 如何在多个屏幕上保留 KivyMD 底部应用程序工具栏