我的操作繁重,只读。这全部由hibernate在spring引导应用程序中映射。 当没有任何类型的突变时,Hibernate花费6秒来刷新我的实体。这只是一个获取操作。
我试图阻止hibernate花费6秒钟,冗余地冲洗。
我将休眠刷新模式设置为MANUAL / NEVER。但它没有任何区别。
属性设置正确,但hibernate统计信息仍会显示刷新,计数和花费的时间。
答案 0 :(得分:2)
有几种方法可以做到这一点。您可以尝试:
org.springframework.transaction.annotation.Transactional
批注设置为只读:
@Transactional(readOnly = true)
对于Hibernate,它将JDBC事务设置为只读模式和FlushMode.NEVER。 详细信息如下:https://stackoverflow.com/a/1712328/5810648
此外,还可以在Hibernate查询上禁用脏检查调用setReadOnly(true)
或在JPA查询上调用setHint("org.hibernate.readOnly", true)
。根据文档:
休眠不会对它们进行脏检查或使更改持久化(例如, new Boolean(true)),默认为false
http://docs.jboss.org/hibernate/stable/entitymanager/reference/en/html/objectstate.html#d0e1215
另一种方法是对该繁重的操作使用无状态会话。详细信息如下:https://stackoverflow.com/a/5497077/5810648