执行该程序 观察控制台输出
再查看数据库中user表内容
发现持久对象的状态改变Hibernate能知道,会在数据库中得到反映。
脱管对象的状态如果想将其状态反映到数据库中,可以调用session的update方法。
当我们不知道对象是瞬时的还是脱管的,可以调用session的saveOrUpdate方法,由Hibernate自己(根据对象的id是否有值)判定处理。 调用saveOrUpdate保存对象,对象将变成持久的,而调用merge方法对象还是脱管的。
对象调用setName等方法,数据库并不会立即更新,而是到执行commit语句后才更新。尽量延迟和数据库的交互。
补充:三种对象转换关系图