1、Hibernate中session.saveOrUpdate()和session.merge()区别:
- saveOrUpdate() 如果代码中没有设置主键,调用时候会直接执行save() ,此时对应SQL为insert操作(数据库需设置主键生成策略,否则报错)
- saveOrUpdate()如果设置了主键,会直接执行update(),对应的SQL为update,此时如果数据库中主键不存在,则报错。
- merge()则是先执行select()操作根据主键查询数据库中表项,然后执行update()操作。如果没有则直接跳过,不会报错。
session.saveOrUpdate(myUser)
<class name="Users" table="users">
<id name="id" column="id">
<!--<generator class="native"/>--> //主键跟随数据库中主键生成策略
</id>
本文介绍了Hibernate中session.saveOrUpdate()和session.merge()的区别。saveOrUpdate()在未设置主键时执行insert操作,设置主键则执行update操作,主键不存在会报错;merge()先查询表项,再执行update,无对应项也不报错。
890

被折叠的 条评论
为什么被折叠?



