Saw*_*yer 2 java orm hibernate
如何通过使用SQL在hibernate中"有效"更新实体.
例如:我有一个Product实体,它有一个字段名称createTime.当我使用时,session.saveOrUpdate(product)我必须从数据库获取此字段然后设置为产品然后更新,实际上每当我使用时session.saveOrUpdate(),我更新了所有字段,即使我只需要更新一个字段.但是大多数时候我们传递给DAO层的值对象不能包含所有字段信息,比如createDate在Product中,我们很少需要更新这个字段.
如何更新所选字段?当然我可以使用HQL,但这将分离保存和更新逻辑.
如果Hibernate有这样的方法会更好:
session.updateOnlyNotNullFields(product);
Run Code Online (Sandbox Code Playgroud)
我怎么能在Hibernate中做到这一点?
默认情况下,Hibernate不使用动态更新,实际上更新整个对象.即使对于大型实体,由此产生的开销也是IMO最小的,您不必担心它.
通过在元素上设置dynamic-update属性,可以更改此行为:trueclass
dynamic-update(可选 - 默认为false):指定应在运行时生成UPDATE SQL,并且只能包含值已更改的列.
这是注释等价物(on @org.hibernate.annotations.Entity,它是JPA的扩展):
dynamicUpdate:允许动态SQL进行更新
但我觉得你太担心了.仅在特殊和非常特殊的情况下使用上述内容.
| 归档时间: |
|
| 查看次数: |
3107 次 |
| 最近记录: |