1,Hibernate标识生成策略
[table]
|标识符生成器 |描述
|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 |适用于代理主键。使用另外一个相关联的对象的标识符。
[/table]
2,Hibernate映射类型
在对象/关系映射文件中,Hibernate采用映射类型作为Java类型和SQL类型的桥梁。Hibernate映射类型分为2种:内置映射类型和自定义映射类型。
2.1内置映射类型
[table]
|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|定长字符
[/table]
2.22、自定义映射类型
Hibernate提供了自定义映射类型接口,允许用户以编程的方式创建自定义的映射类型。用户自定义的映射类型需要实现net.sf.hibernate.UserType或net.sf.hibernate.CompositeUserType接口。具体的创建自定义映射类型的方法请参考hibernate官方文档或相关资料.
[table]
|标识符生成器 |描述
|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 |适用于代理主键。使用另外一个相关联的对象的标识符。
[/table]
2,Hibernate映射类型
在对象/关系映射文件中,Hibernate采用映射类型作为Java类型和SQL类型的桥梁。Hibernate映射类型分为2种:内置映射类型和自定义映射类型。
2.1内置映射类型
[table]
|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|定长字符
[/table]
2.22、自定义映射类型
Hibernate提供了自定义映射类型接口,允许用户以编程的方式创建自定义的映射类型。用户自定义的映射类型需要实现net.sf.hibernate.UserType或net.sf.hibernate.CompositeUserType接口。具体的创建自定义映射类型的方法请参考hibernate官方文档或相关资料.