我正在使用JPA和Hibernate.当我修改对象的一个属性并更新它时; 生成的SQL显示所有列都已更新!为什么不只更新修改后的列?有没有办法实现这一点,因为我觉得会更加优化.
默认情况下,hibernate包含更新查询中的所有字段.如果要排除它,请使用自定义更新HQL,也可以配置hibernate以排除更新查询中未修改的字段,如本文所述.
这是通过dynamic-update="true"
在类映射中添加来完成的.
<class ... table="your_table" .... dynamic-update="true">
Run Code Online (Sandbox Code Playgroud)
在具有许多列(传统设计)或包含大量数据的大型表中,这将对系统性能产生很大影响.它可以有一些性能影响,告诉这里.因此,在实现代码之前,请先测量代码的性能.
请阅读此处的API 以获取更多信息.
如果您正在使用注释,
@org.hibernate.annotations.Entity(selectBeforeUpdate=true)
Run Code Online (Sandbox Code Playgroud)
它是一个特定于hibernate的注释,在JPA中不可用.这是一篇链接到细节的好文章.
归档时间: |
|
查看次数: |
1774 次 |
最近记录: |