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 操作,自动生成主键,插入该数据进入数据库。

  • 相关阅读:
    ubuntu18.04 扩展根目录 亲测有效
    mysql数据恢复
    java多线程
    jenkins安装搭建及使用
    springboot web开发
    git版本管理
    docker安装部署项目
    vue nuxt项目部署
    IntelliJ IDEA常用快捷键
    IntelliJ IDEA常用设置
  • 原文地址:https://www.cnblogs.com/anai/p/4233698.html
Copyright © 2011-2022 走看看