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>