zoukankan      html  css  js  c++  java
  • Hibernate saveOrUpdate方法到底是怎么执行的?

      saveOrUpdate方法,如果传入的对象有主键就执行更新,没有就执行新增。这句话误导了很多人。

      究竟是执行新增还是更新,是要有上下文环境的。这个环境就是主键策略的选择。

      主键生成方式为 手动设置:assigned:

        设置了主键的值:

           执行select * from table_name where id = ?  

          若可以查到数据,则执行update操作,

          如果查不到数据,则执行save操作。

        没有设置主键的值:

          hibernate报错,意思是没有指示主键是多少,hibernate不知道怎么往数据库插入。

      主键生成方式为 自动生成:identity:

        如果该对象设置了主键的值:

            执行update操作

          若数据库表中有匹配该id的数据,修改成功。

          若数据库表中没有匹配该id的数据,hibernate报错。

        如果该对象不存在标识属性:

        执行save 操作,自动生成主键,插入该数据进入数据库。

  • 相关阅读:
    sed
    zabbix时间不同步
    zabbix-agent安装
    zabbix安装(网络)
    sendmail启动报错
    12306:被骂十年不吭声,终成大器
    一文带你看清HTTP所有概念(转)
    为什么 K8s 在阿里能成功(转)
    一文解读融资方式
    一文解读工业互联网 (转)
  • 原文地址:https://www.cnblogs.com/anai/p/4233698.html
Copyright © 2011-2022 走看看