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>