下面看一个使用 save 方法的例子:def p = Person.get(1)
p.save()
一个主要的不同是当你调用save的时候Hibernate不会执行任何SQL操作. Hibernate通常将SQL语句分批,最后执行他们.
对你来说,这些一般都是由Grails自动完成的,它管理着你的Hibernate session.
也有一些特殊情况,有时候你可能想自己控制那些语句什么时候被执行,或者用Hibernate的术语来说,就是什么时候session被"flushed".要这样的话,你可以对save方法使用flush参数:def p = Person.get(1)
p.save(flush:true)
请注意,在这种情况下,所有暂存的SQL语句包括以往的保存将同步到数据库。
这也可以让您捕捉任何被抛出的异常,这在涉及乐观锁高度并发的情况下是很常用的:[code]def p = Person.get(1)
p.save(flush:true)
def p = Person.get(1)
try {
p.save(flush:true)
}
catch(Exception e) {
// deal with exception
}
[/code]