gpt4 book ai didi

grails - 什么时候应该在Grails中的域对象实例上调用save()?

转载 作者:行者123 更新时间:2023-12-04 07:42:14 24 4
gpt4 key购买 nike

根据我的阅读,save()通知持久化上下文应保存或更新实例。但是,服务中有一些方法可以更改域实例的属性而无需调用save(),并且更改立即显示在我的数据库中,没有问题。
save()方法是否只是一种更安全的方式,它知道在进行更改后将更新域实例(并使用failOnError映射捕获错误)?是否应该在每次更改域实例的属性时使用它,还是这样做会过度使用它?

最佳答案

如果创建域类的新实例,则.save()调用将告诉底层的Hibernate层将新对象持久保存到数据库中。没有.save(),它将不会持久化到数据库中。

如果您通过.get(myId)检索对象,那么任何更改都将在基础事务结束时自动保存到数据库中,因为Hibernate将该对象视为“脏”对象。事务的结束是在对事务服务的方法调用的末尾或在对 Controller 的请求的末尾。如果需要,可以在这些实例中调用.save(),但这不是必需的。它确实可以通过.save(flush:true)failOnError用法轻松访问刷新Hibernate进行验证。

关于grails - 什么时候应该在Grails中的域对象实例上调用save()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9490415/

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