因此,经过将近两个月的等待,我终于能够在各种来源的帮助下得出以下建议作为对我自己问题的回答:
1.)使用时
dynamic-update,Hibernate每次都必须生成相应的SQL字符串,因此Hibernate方面会降低性能。换句话说,在数据库端和hibernate端的开销之间需要权衡。
2.)Hibernate为每个实体缓存实际的SELECT,INSERT和UPDATE
SQL字符串。这样就不必在每次要查找,保留或更新实体时都重新创建这些语句。但是,使用时
dynamic-update,Hibernate必须每次都生成相应的SQL字符串。这会导致hibernate方面的性能损失。
3.)应用于非常小的和简单的表时很有用,因为使用此注释可以显着提高性能。在更现实的情况下,在使用远程数据库的更大表上,性能提升可能会更加明显。当然,您从中获得的里程数会有所不同,大多数列都需要更新。
4.)
@DynamicUpdate annotation/ dynamic-update=true用于指定每次修改实体时都应生成UPDATE
SQL语句。默认情况下,Hibernate使用缓存的UPDATE语句来设置所有表列。当使用注释对实体进行
@DynamicUpdate注释时,PreparedStatement将仅包括其值已更改的列。
总体可以总结为:
- 运行时SQL生成开销。
- 不再使用PreparedStatement(缓存)。
- 性能开销。
积分 : _Hibernate的ORM 5.2.7.Final用户指南, http://memorynotfound.com/hibernate-
dynamic-update-attriburte-example/
PS:
dynamic-insert=true/ @DynamicInsert注解也适用



