Hibernate 提供了三种方式将POJO变成PO类
- 使用持久化注解(以JPA标准注解为主,如果有一些特殊要求,则依然需要使用Hibernate本身提供的注解)
- 使用JPA2提供的XML配置描述文件,这种方式可以让Hibernate的PO类与JPA实体类兼容
- 使用Hibernate传统的XML映射文件(hbm文件)。
1 Hibernate映射主键、属性
(1)使用注解的方式
hibernate主键生成
通常情况下如果实体类的标识属性是基本数据类型、基本类型的包装类、String、Date等类型,可以简单的使用@ID修饰该实体的属性即可。
如果希望Hibernate为逻辑主键自动生成主键值,可以使用@GeneratedValue来修饰实体的标识属性。
属性 | 是否必须 | 说明 |
strategy | 否 | 指定Hibernate对该主键列使用怎么样的主键生成策略
|
generator | 否 | 当使用GenerationType.SEQUENCE,GenerationType.TABLE主键生成策略时,该属性引用@SequenceGenerator,@TableGenerator所定义的生成器的名称 |
Hibernate主键生成策略
JPA注解只支持AUTO、Identity、SEQUENCE、TABLE这4中生成策略,如果希望使用Hibernate提供的主键生成策略,就需要使用Hibernate本身的@GenericGenerator注解,该注解用于定义生成器。包括name和strategy两个属性。
stratety属性可指定的值:
- native: 对于 oracle 采用 Sequence 方式,对于MySQL 和 SQL Server 采用identity(自增主键生成机制),native就是将主键的生成工作交由数据库完成,hibernate不管(很常用)。