http://www.mkyong.com/hibernate/hibernate/hibernate-dynamic-update-attribute- example/也提到了使用dynamic-update或dynamic- insert有积极的作用,尽管通常只对性能有一点影响。
但是参考文档提到,这也会对性能产生负面影响,如下所述:http : //docs.jboss.org/hibernate/core/3.3/reference/en/html/mapping.html#mapping- declaration- class:
尽管这些设置在某些情况下可以提高性能,但实际上在其他情况下却可以降低性能。
有人可以建议一些示例/场景提及相同的负面性能影响吗?
Hibernate为 每个 实体缓存实际的INSERT / SELECT / UPDATE SQL字符串,其明显的好处是,当您要保留,查找或更新实体时,它不必计算SQL。
但是,当使用动态插入或动态更新时,Hibernate每次都必须生成相应的SQL字符串,因此,在Hibernate方面会降低性能。
换句话说,在数据库端和hibernate端的开销之间需要权衡。
我的观点是,对于具有胖blob列的表或具有大量列的表,动态插入和动态更新可能会很有趣。在其他情况下,我不相信动态插入或更新总是意味着提高性能(默认情况下我不使用它们)。但与往常一样,您应该对其进行衡量。