我将 JPA 与 Hibernate 一起使用。当我修改对象的一个属性并更新它时;生成的 SQL 显示所有列都已更新!为什么它不只更新修改的列?有没有办法实现这一点,因为我觉得这样会更加优化。
默认情况下,hibernate 包含更新查询中的所有字段。如果你想排除这个或者使用自定义更新 HQL或者你可以配置休眠排除更新查询中未修改的字段如本文所述article http://www.mkyong.com/hibernate/hibernate-dynamic-update-attribute-example/.
这是通过添加来完成的dynamic-update="true"
在你的类映射中。
<class ... table="your_table" .... dynamic-update="true">
在具有许多列(传统设计)或包含大量数据的大表中,这将对系统性能产生很大影响。如前所述,它可能会对性能产生一些影响here https://stackoverflow.com/a/3405560/507864。因此,在实现代码之前先测量代码的性能。
阅读APIhere http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/mapping.html#mapping-declaration-class了解更多信息。
如果您使用注释,
@org.hibernate.annotations.Entity(selectBeforeUpdate=true)
它是 Hibernate 特定的注释,在 JPA 中不可用。这里有一个很好的article http://www.skill-guru.com/blog/2009/10/22/some-useful-options-in-class-element-in-hibernate/链接到详细信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)