首先 saveOrUpdate返回void 也就是什么都不返回 而merge会返回一个对象 其次 saveOrUpdate的做法是:自动判断该对象是否曾经持久化过,如果曾持久化过则使用update操作 否则save操作 merge 在执行session.merge(a)代码后,a对象仍然不是持久化状态,a对象仍然不会被关联到Session上 而update会持久化对象 说白了:merge()用法替代了hibernate早期版本的saveOrUpdateCopy,因此该方法的作用只是将当前对象信息保存到数据库,并且不会将对象转换成持久化状态。
|