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 |