n( user1 == user2 );
System.out.println( user1 == user3 );
Hibernate配置文件中映射元素详解(3)
时间:2011-01-01
应用程序在执行上述代码时,第一次加载OID为1的User对象,从数据库中查找ID为1的记录,然后创建相应的User实例,并把它保存在Session缓存中,最后将该实例的引用赋值给变量user1。第二次加载OID为1的对象时,直接把Session缓存中OID为1的实例的引用赋值给变量user2。因此,表达式user1==user2的结果为true。
标识的生成可以使用不同的策略,表1为Hibernate内置的标识生成策略。
表1 Hibernate标识生成策略
标识符生成器
|
描述 |
increment |
适用于代理主键。由Hibernate自动以递增方式生成。 |
identity |
适用于代理主键。由底层数据库生成标识符。 |
sequence |
适用于代理主键。Hibernate根据底层数据库的序列生成标识符,这要求底层数据库支持序列。 |
hilo |
适用于代理主键。Hibernate分局high/low算法生成标识符。 |
seqhilo |
适用于代理主键。使用一个高/低位算法来高效的生成long,short或者int类型的标识符。 |
native |
适用于代理主键。根据底层数据库对自动生成标识符的方式,自动选择identity、sequence或hilo。 |
uuid.hex |
适用于代理主键。Hibernate采用128位的UUID算法生成标识符。 |
uuid.string
|
适用于代理主键。UUID被编码成一个16字符长的字符串。 |
assigned |
适用于自然主键。由Java应用程序负责生成标识符。 |
foreign |
适用于代理主键。使用另外一个相关联的对象的标识符。 |
Hibernate映射类型
在对象/关系映射文件中,Hibernate采用映射类型作为Java类型和SQL类型的桥梁。Hibernate映射类型分为2种:内置映射类型和自定义映射类型。
1、内置映射类型
Hibernate对所有的Java原生类型、常用的Java类型如String、Date等都定义了内置的映射类型。表2列出了Hibernate映射类型、对应的Java类型以及对应的标准SQL类型。
表2 Hibernate内置映射类型
Hibernate映射类型 |
Java类型 |
标准SQL类型 |
大小 |
integer/int |
java.lang.Integer/int |
INTEGER |
4字节 |
long |
java.lang.Long/long |
BIGINT |
8字节 |
short |
java.lang.Short/short |
SMALLINT |
2字节 |
byte |
java.lang.Byte/byte |
TINYINT |
1字节 |
float |
java.lang.Float/float |
FLOAT |
4字节 |
double |
java.lang.Double/double |
DOUBLE |
8字节 |
big_decimal |
java.math.BigDecimal |
NUMERIC |
|
character |
java.lang.Character/java.lang.String/char |
CHAR(1) |
定长字符 |
string |
java.lang.String |
VARCHAR |
变长字符 |
boolean/ yes_no/true_false |
java.lang.Boolean/Boolean |
BIT |
布尔类型 |
date |
java.util.Date/java.sql.Date |
DATE |
日期 |
timestamp |
java.util.Date/java.util.Timestamp |
TIMESTAMP |
日期 |
calendar |
java.util.Calendar |
TIMESTAMP |
日期 |
calendar_date |
java.util.Calendar |
DATE |
日期 |
binary |
byte[] |
BLOB
|
BLOB |
text |
java.lang.String |
TEXT |
CLOB |
serializable |
实现java.io.Serializablej接口的任意Java类 |
BLOB |
BLOB |
clob |
java.sql.Clob |
CLOB |
CLOB |
blob |
java.sql.Blob |
BLOB |
BLOB |
class |
java.lang.Class |
VARCHAR |
定长字符 |
locale |
java.util.Locale |
VARCHAR |
定长字符 |
timezone |
java.util.TimeZone |
VARCHAR |
定长字符 |
currency |
java.util.Currency |
VARCHAR |
定长字符 |
|