Hibernate主键的生成方式

1、assigned 所有的数据库都适用;

      在调用save()方法之前,要对主键设置值,不设置报错;

      <generator class="assigned"></generator>

2、increment 按照数据库的一个顺序值来增长;

     适用于mysql、oracle、db2、sqlserver、h2等数据库;

     注意: 每次新增前,都会查询主键的最大值;

     然后在其基础上加1,作为新增的主键值;

    <generator class="increment"></generator>

3、identity 根据底层数据库的能力,来作为主键的自增长策略;

     适用于 mysql、db2、sqlserver等;

      不适用于oracle数据库;

     <generator class="identity "></generator>

4、sequence 根据底层数据库支持的能力,来作为主键值的生成策略;

      适用于oracle、db2数据库;

      不适用于mysql、sqlserver数据库;

           <generator class="sequence">

               <param name="property">user5.seq_aa</param>

          </generator>

5、native 根据底层数据库支持的自增长能力,自动选择hilo、identity、sequence其中的一个来完成该主键的自增长;

      mysql数据库中: <generator class="native"></generator> oracle的数据库中

         <generator class="native">

              <param name="sequence_name">seq_aa</param>

         </generator>

6、uuid 主键为varchar类型;

     生成16进制 32位的字符串类型;

     生成的数据唯一;

     适用于mysql、oracle、sqlserver、db2等数据库;

     <generator class="uuid"></generator>

7、foreign : 表关系中 再讲;

   -- 悲观锁: select 列名.... from 表名称 [where .....] for update;

 

 

PersonBean.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.bwf.code.bean.PersonBean" table="person" schema="user5">
<!-- id标签表示主键
name 表示模型bena中的属性名称
column 表示表结构中的列名称
generator 表示主键的约束, identity表示主键在数据库中自增长;
-->
<id name="id" type="java.lang.Long">
      <column name="pid" sql-type="int"></column>
      <generator class="sequence">
           <param name="property">user5.seq_aa</param>
      </generator>
</id>

<property name="name" column="pname" type="java.lang.String"></property>
<property name="birthday" column="birthday" type="java.lang.String"></property>

<property name="sex" column="sex"></property>
<property name="phone"></property>
</class>
</hibernate-mapping>

 

posted @ 2017-06-19 20:43  hdsfakjhf  阅读(2297)  评论(0编辑  收藏  举报