在Hibernate的映射文件中:
- id元素:用于定义实体类的主键属性。它的值必须是一个属性名,代表主键属性。例如:
<id name="id" />
或者使用@Id注解:
@Id
private Long id;
- generator元素:用于定义主键生成策略。它决定Hibernate在保存对象时如何生成主键值。常用的生成策略有:
- increment:自动增长,适用于数值类型主键。
- identity:使用数据库标识列生成主键,SQL Server支持。
- sequence:使用数据库序列生成主键,Oracle支持。
- hilo:高低序数生成算法,用于并发环境。
- uuid:生成唯一UUID字符串,不依赖数据库。
例如:
<generator class="increment" />
或者使用@GeneratedValue注解:
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
id和generator元素(或@Id、@GeneratedValue注解)共同定义了实体类主键属性的映射规则:
- id指定哪个属性作为主键。
- generator指定使用何种策略生成主键值,不同数据库和需求选择不同策略。
- 定义好主键映射规则后,Hibernate在执行保存操作时,就能够为实体对象生成正确的主键值。
所以,这两个元素是Hibernate映射文件中最基本和最重要的元素。没有正确定义的主键映射,Hibernate将无法功能正确地保存对象到数据库。理解id和generator元素的作用,是Hibernate映射文件的基础。不同的主键生成策略适用于不同的数据库,满足各种需求。