hibernate主键生成策略native,assigned,uuid的区别

  • Post author:
  • Post category:其他


hibernate在操作数据库时一般使用这3种id主键生成策略,native,assigned以及uuid.hex,我们在实体类映射文件student.hbm.xml中对这3种id主键策略进行讲解。

第一种:assigned主键策略需要在添加数据时自己设置id,因为它不能自动生成id,

<?xml version="1.0"?>
<!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.baidu.entity.Student" table="student">
      <!-- 主键配置 -->
      <id name="id" column="id">
          <!-- 主键策略 -->
          <generator class="assigned"></generator>
      </id>
      <property name="name" column="name"></property>
      <property name="gender" column="gender"></property>
      <property name="age" column="age"></property>
   </class>
</hibernate-mapping>

第二种:native为id自动生成策略,生成的是数字id,添加数据到mysql数据库时不需要设置id的值,使用方法如下,实体类id属性为int类型。

<id name="id" column="id">
  <!-- 主键策略 -->
  <generator class="native"></generator>
</id>

第三种:uuid.hex会自动生成16进制uuid主键,添加数据到mysql数据库时不需要设置id的值,如果将id设置为这种策略,那么实体类id属性必须要定义成字符串string类型。

<id name="id" type="java.lang.String">
	<column name="id" length="32" />
	<generator class="uuid.hex" />
</id>