一、ID生成策略配置
1、ID生成方式在xml中配置方式:
/p>
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
2、ID用注解配置:
在ID注解下添加注解@generatedValue,只有四种方式,默认的策略是auto
配置方式:@genetatedValue(strategy=GenerationType.AUTO)
(1)AUTO - 相当于采用xml中native方式
(2)TABLE - 使用表保存id值
(3)IDENTITY - identity column
(4)SEQUENCE - sequence
在类名上添加注解@SequenceGenerator(name="teacherSEQ" , sequenceName="teacherSEQ_DB");定义sequence生成器,name属性指定的是生成器名字,sequenceName指定的是sequence名字
在getId()方法上添加注解@genetatoedValue(strategy=GenerationType.SEQUENCE , generator="teacherSEQ")表示采用sequence生成策略,采用生成器是teacherSEQ
二、ID主要生成策略
hibernate中id生成主要方式有:
(1)native:根据不同的数据库采用不同的ID生成方式,例如:在SQL Server中采用identity; 在MySQL中采用auto_increment; 在ORACLE中就会采用sequence。
(2)uuid:原理是使用128位的uuid算法产生主键,从而能够确保网络环境下的一致性。使用此生成策略时,实体类的主键是String类型的,映射成表中字段为varchar。适用所有数据库。
(3)identity:这种策略在采用SQL Server时,相当于SQL Server的identity关键字。
(4)sequence:在 Oracle中使用序列(sequence)。返回的标识符是long, short或者 int类型的。
三、联合主键
1、xml文件方式配置联合主键
单独建一个类作为主键类,以Student类为例,假设student有两个主键id和name,那么可以建一个主键类StudentPK,主键类中包含两个属性即student的两个主键,而且要实现Serializable接口,覆盖equals和hashCode方法:
packagecn.orlion.hibernate.model;//实现Serializable接口
public class StudentPK i