Hibernate的映射文件中的id和generator元素是干什么用的?

在Hibernate的映射文件中:

  1. id元素:用于定义实体类的主键属性。它的值必须是一个属性名,代表主键属性。例如:
<id name="id" />

或者使用@Id注解:

@Id
private Long id;
  1. 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映射文件的基础。不同的主键生成策略适用于不同的数据库,满足各种需求。