Hibernate映射类型与映射对象标识符

Hibernate映射主要是通过对象关系映射文件实现,对象关系映射文件把数据库中的实体(一般为二维表)映射到面向对象中的实体对象,把数据库中多个表之间的相互关系也反映到映射好的类中。以后,在Hibernate中对数据库的操作就直接转换为对这些实体对象的操作了。

 

 java基本映射类型的Hibernate映射类型:

Java类型

Hibernate映射类型

标准SQL类型

 

int或java.lang.Integer

integer或int

INTEGER

long或java.lang.Long

long

BIGINT

short或java.lang.Short

short

SMALLINT

byte或java.lang.Byte

byte

TINYINT

float或java.lang.Float

float

FLOAT

double或java.lang.Double

double

DOUBLE

java.math.BigDecimal

big_decimal

NUMERIC

char或java.lang.Character

character

CHAR(1)

java.lang.String

string

VARCHAR

       boolean或java.lang.Boolean       

boolean

BIT

boolean或java.lang.Boolean

yes_no

    CHAR(1)('Y'或' N')      

boolean或java.lang.Boolean

true_false

CHAR(1)('T'或' F')

 

java时间和日期类型的Hibernate映射类型:

Java类型

     Hibernate映射类型      

     标准SQL类型           

            说明           

java.util.Date或java.sql.date

date

date

日期

Java.util.Date或java.sql.Time

time

time

 时间

java.util.Date或java.sql.Timestamp

 

timestamp

TIMESTAMP

时间戳

java.util.Calendar

calendar

TIMESTAMP

 

java.util.Calendar

calendar_date

DATE

 

 

java大对象类型的Hibernate映射类型:

Java类型

Hibernate映射类型

标准SQL类型

MySQL类型

Oracle类型

byte[]

binary

VARBINARY(或者BLOB)

BLOB

BLOB

java.lang.String

text

CLOB

TEXT

CLOB

实现java.io.Serializable接口的任意一个java类

serializable

VARBINARY(或者BLOB)

BLOB

BLOB

java.sql.Clob

clob

CLOB

TEXT

CLOB

java.sql.Blob blob

blob

BLOB

BLOB

BLOB

 


 

 映射对象标识符(OID):

Hibernate中使用对象标识符(OID)来惟一标识一个对象。为了应付多变的业务要求,Hibernate制定了多种主键生成器。在hibernate的映射文件中,可以指定主键的生成器,如:

Hibernate提供的几种内置标识符生成器:

 

标识符生成器

描述

increment

由hibernate自动以递增的方式生成标识符,每次增量为1.适用于代理主键

identity

由底层数据库生成标识符.数据库必须支持自动增长字段类型,不便于不同数据库之间的移植.适用于代理主键.

sequence

Hibernate根据底层数据库序列来生成标识符.前提是条件是底层数据库支持序列(如Oracle).适用于代理主键

hilo

Hibernate根据high/how算法来生成标识符.适用于代理主键.

seqhilo

使用一个高/低位算法来高效的生成

short 或者 int

 

类型的标识符,给定一个数据库序列(sequence)的名字.适用于代理主键.

native: 根据底层数据库对自动生成标识符的支持能力,来选择identity,sequence或hilo.适用于代理主键.

native

根据底层数据库对自动生成标识符的支持能力,来选择identity,sequence或hilo.适用于代理主键

uuid.hex

Hibernate采用128位的UUID(Universal Unique Identification)算法来生成标识符.UUID算法能够在网络环境中生成唯一的字符串标识符.但字符串型的主键比整型的主键占用更多的数据库空间.适用于代理主键.

 

uuid.string

使用UUID算法来生成标识符.UUID被编码为一个16个字符长的任意ASCII组成的字符串。适用于代理主键.

assigned

由Java应用程序负责生成标识符,需在保存数据前完成.适用于自然主键.

 

 

映射自然主键:

代理主键是指与业务逻辑没有联系的主键,而自然主键指与业务逻辑相关的主键。Hibernate中推荐使用代理主键,而应该尽量不使用自然主键,因为自然主键与业务逻辑联系紧密,一旦自然主键的需求发生变化,与之相关的程序就要变化。自然主键在遗留的旧系统中仍然大量的存在。

如:某人设计的学生表中没有定义代理主键ID,而是以学号(no)字段作为主键,那么相应的学生类中不必定义属性ID,而是以no属性作为OID。也就是说由程序负责给主键赋值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值