Grails 1.1 持久化基础 - 保存和更新

下面看一个使用 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]