Hibernate提供的几种内置标识符生成器
标识符生成器 | 简 介 |
increment | 适用于代理主键。由Hibernate以自增的方式生成,增量为1 |
identity | 适用于代理主键。由底层数据库生成,前提是底层数据库支持自增字段类型 |
续表
标识符生成器 | 简 介 |
sequence | 适用于代理主键。Hibernate根据底层数据库的序列生成,前提条件是底层数据库支持序列 |
hilo | 适用于代理主键。Hibernate根据high/low算法生成,Hibernate把特定表的字段作为“heigh”值,在默认的情况下选用hibernate_unique_key表的next_hi字段 |
native | 适用于代理主键。根据底层数据库对自动生成标识符的支持能力,选择identity、sequence、hilo |
uuid.hex | 适用于代理主键。Hibernate采用128位的UUID(Universal Unique Identitication)算法生成,UUID算法能够在网络环境生成惟一的字符串标识符,不推荐使用,因为字符串型要比整型占用更多的数据库空间 |
assigned | 适用于自然主键。由Java应用程序负责生成,此时不能把setId()方法声明为private类型,不推荐使用 |
<property>子元素用于设定类的属性和表字段的映射,该元素主要包括name、column、type和not-null属性。
● name属性
name属性用于指定持久化类的属性名。
● column属性
column属性用于指定与类属性映射的表的字段名。
● type属性
type属性用于指定Hibernate映射类型。Hibernate映射类型是Java类型与SQL类型的桥梁,三者之间的对应关系如表2.3所示。
Java类型、Hibernate映射类型、SQL类型3者之间的对应关系
Java属性类型 | Hibernate映射类型 | SQL类型 |
String | string | varchar() |
String | text | text |
int | int | int |
char | character | char() |
boolean | boolean | bit |
byte[] | binary | blob |
java.sql.Date | date | date |
java.sql.Timestamp | timestamp | timestamp |