Hibernate session.update()vs更新查询?

时间:2013-01-31 10:13:26

标签: java hibernate

嗨,如果想更新一行的某些特定列,那么我应该在hibernate中使用更新查询,还是只使用hibernate的session.update()方法。刚刚开始了解

@org.hibernate.annotations.Entity(
        dynamicUpdate = true 

注释如果设置我可以更新特定列。我之前没有使用过这个,所以只想知道是否有任何使用此规范的规范。只需要你的帮助就此做出决定。哪种方法会更好?

1 个答案:

答案 0 :(得分:1)

关闭动态会话更新后,Hibernate将缓存所有可能的查询以查找所有实体。因此,每次想要更新实体时,Hibernate都不必生成SQL。

当它打开时,Hibernate将始终在请求时生成SQL查询,而不是缓存它。所以它对你的数据库来说更轻,但它对Hibernate来说变得更重了。

什么时候应该使用Hibernate动态更新?如果你有一个包含大量列的巨大表,那么缓存所有实体的所有查询将比平常花费更多的内存。因此,您可以启用动态更新以提高性能。此外,如果您正在调试,动态更新将为您提供更具可读性的查询,因为只有修改后的列才会出现在您的更新语句中。

您应该使用更新查询还是会话更新?更新查询的可读性较差且难以维护(例如,如果字段名称已更改,则必须更改所有查询,而不会影响会话更新)。