gpt4 book ai didi

grails - 在 Config.groovy 中不将 grails.gorm.autoFlush 和 grails.gorm.failOnError 设置为 true 的技术原因?

转载 作者:行者123 更新时间:2023-12-04 00:10:37 29 4
gpt4 key购买 nike

除了这样做对性能的明显影响之外,还有什么好的技术原因 不是 设置 grails.gorm.autoFlush = truegrails.gorm.failOnError = trueConfig.groovy ?

最佳答案

GORM 是 Hibernate 的包装器(至少这是实现之一 - 现在还有各种 NoSQL 实现,如 Redis)。通过设置 autoFlushtrue你拒绝 Hibernate 优化它对数据库的调用的机会。例如,当单个插入可能已经足够时,您可能会导致它插入然后更新。这本身并没有什么坏处,只是没有必要而且效率较低。 Hibernate 足够聪明,可以知道它何时需要写入数据库并可以进行优化——您已经将这个问题抽象化了。

设置 failOnError每当您尝试保存未验证的域对象时,都会导致 save 抛出异常。在构建涉及从用户输入创建对象的应用程序时,对象不进行验证是很正常的 - 缺少输入,错误格式等。应该为异常和错误保存异常处理 - 它不应该用于应用程序的正常流程. save()当对象成功保存时返回对象,否则返回 null,这为您提供了一种更方便的方法来处理作为应用程序流程一部分的验证,而不是将 try-catch 块放在所有地方。

Peter Ledbrook(Grails in Action 的作者之一)撰写了一系列很棒的“GORM Gotchas”文章,其中他更详细地讨论了其中的一些问题 - 非常值得一读:part 1 , part 2 & part 3 .

关于grails - 在 Config.groovy 中不将 grails.gorm.autoFlush 和 grails.gorm.failOnError 设置为 true 的技术原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4702515/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com