摘自hibernate说明文档:
saveOrUpdate()做下面的事:
如果对象已经在本session中持久化了,不做任何事
如果关联另一个与本session关联的对象拥有相同的持久化表示(identitifer),抛出一个异常
如果对象没有持久化标识(identitier)属性,对其调用save()
如果对象的持久化标识(identifier)表明其是一个新实例化的对象,对其调用save()
如果对象是附带版本信息的(通过<version>或<timestamp>)并且版本属性的值表明其是一个新实例化的对象,save()它。否则update()这个对象