merge()

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

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

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

posted @ 2018-05-21 09:57  EmbraceU  阅读(174)  评论(0编辑  收藏  举报