• hibernate的id生成策略


    欢迎转载,请注明出处http://www.cnblogs.com/shizhongtao/p/3436523.html

    一、xml配置方式的id生成

    <id name="id" >
      <generator class="native"></generator>
    </id>

    其中class常用的值有四个,native、 identity、 sequence、 uuid。

    注:其中native和uuid不局限与数据库。如果用oracle的话。使用native,就会在数据库中使用sequence来自动生成id;在mysql中。会设置id auto_increatment(代表id自动增长)

      “uuid.hex” :  由   Hibernate   基于128   位   UUID   算法   生成16   进制数值(编码后以长度32   的字符串表示)作为主键。
     “uuid.string” :  与uuid.hex   类似,只是生成的主键未进行编码(长度16),不能应用在   PostgreSQL   数据库中。

    二、注解(anotation)方式

    • auto方式在主键id上标注,@GeneratedValue
       (@GeneratedValue(strategy=GenerationType.AUTO))
      
            默认:对 MySQL,使用auto_increment
            对 Oracle使用hibernate_sequence(名称固定)
    • 使用IDENTITY(@GeneratedValue(strategy=GenerationType.IDENTITY)
      使用于sql server,mysql数据库中,oracle不适用
    •  SEQUENCE(@GeneratedValue(strategy=GenerationType.SEQUENCE))(在oracle中使用)
      @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "teacherSEQ")
      public class Teacher
      {
          private int id;
          private String name;
          @SequenceGenerator(name="teacherSEQ", sequenceName="teacherSEQ_DB") 
          public int getId()
          {
              return id;
          }
          public void setId(int id)
          {
              this.id = id;
          }
          public String getName()
          {
              return name;
          }
          public void setName(String name)
          {
              this.name = name;
          }
      }
    • 使用uuid方式,和上面的sequence的方式类似
          @Id
          @GenericGenerator(name = "system-uuid", strategy = "uuid.hex")
          @GeneratedValue(generator = "system-uuid")   
          public String getId() {
              return id;
          }
    • 使用table方式,待续……

     三、联合主键

  • 相关阅读:
    Android学习之多线程开发总结<二>
    Android学习之多线程开发总结<一>
    Android代码模版整理<一>
    Android学习之Bluetooth开发总结<续3>
    Android学习—自定义组件
    Android学习之解析XML
    Android学习—自定义对话框Dialog
    Android学习之Bluetooth开发总结<续2>
    Android学习之Bluetooth开发总结<续>
    .Net Core 发布项目时出现警告提示“不建议指定此包的版本”的解决办法
  • 原文地址:https://www.cnblogs.com/shizhongtao/p/3436523.html
Copyright © 2020-2023  润新知