merge()

    项目封装了DAO,特意看了一下封装方法,发现更新用的是getHibernateTemplate()的merge()方法,了解了一下merge的执行方式:

    如果对更新对象设置了ID,就当作游离态处理,当ID在数据库中不能找到时,用update的话肯定会报异常,然而用merge的话,就会insert。当ID在数据库中能找到的时候,update与merge的执行效果都是更新数据,发出update语句;

    如果没有设置ID的话,则这个对象就当作瞬态处理:用update的话,由于没有ID,所以会报异常,merge此时则会保存数据,根据ID生产策略生成一条数据;

原文地址:https://www.cnblogs.com/embraceU/p/9235323.html