hibernate 学习笔记一

Hibernate中的数据类型

---------------------------

Java中的数据类型

1、基本数据类型

2、对象类型

Hibernate中的数据类型

1、值类型(intdoublestring):没有对应的映射文件不能单独被映射

2、实体类型:有对应的映射文件,可以单独被映射

-------------------------------------------------------------------------------------------------------------------------------

关联关系映射

---------------------------

一对一映射

1、唯一外键关联

表上:

tableusertableadddress

id<PK>id<PK>

namecity

agestreet

address_id<FK>

类上:

classUserclassAddress

idid

namecity

agestreet

AddressUser

映射文件上:

User.hbm.xml

<many-to-onename="address"class="Address"column="address_id"unique="true"/>

Address.hbm.xml

<one-to-onename="user"class="User"/>

2、主键关联

表上:

tableusertableaddress

id<PK>id<PK><FK>

namecity

agestreet

类上:

classUserclassAddress

idid

namecity

agestreet

AddressUser

映射文件上:

User.hbm.xml

<one-to-onename="address"class="Address"/>

Address.hbm.xml

<one-to-onename="user"class="User"/>

<idname="id"column="id">

<generatorclass="foreign">

<paramname="property">user</param>

</generator>

</id>

一对多关联

1、单向关联(unidirectional)

表上:

tableusertableaddress

id<PK>id<PK>

namecity

agestreet

address_id<FK>

类上:

classUserclassAddress

idid

namecity

agestreet

Address

映射文件上:

User.hbm.xml

<many-to-onename="address"column="address_id"/>

Address.hbm.xml

不需特殊处理

2、双向关联(bidirectional)

表上:

tableusertableaddress

id<PK>id<PK>

namecity

agestreet

address_id<FK>

类上:

classUserclassAddress

idid

namecity

agestreet

AddressSet<User>

映射文件上:

User.hbm.xml

<many-to-onename="address"column="address_id"/>

Address.hbm.xml

<setname="users"inverse="true">

<keycolumn="address_id"/>

<one-to-manyclass="User"/>

</set>

<inverse>:在映射双向关联关系时,可以将父表所对应映射文件中的inverse属性设为true,以避免双方都对关联

进行维护,可以减少update语句,提高性能

在映射一对多的双向关联时,应该在"one"方把inverse属性设为true,这样可以提高应用的性能,并且

在建立两个对象的双向关联时,应该同时修改关联两端的对象的相应属性

<cascade>:设置级联关系

save-update:级联保存、更新

delete:级联删除

all:包括save-update,delete

none:不级联

多对多关联

1、单向关联

2、双向关联

表上:

tabeusertableuser_addresstableaddress

id<PK>user_id<PK,FK>id<PK>

nameaddress_id<PK,FK>city

agestreet

类上:

classUserclassAddress

idid

namecity

agestreet

Set<Address>Set<User>

映射文件中:

User.hbm.xml

<setname="addresses"inverse="true"table="user_address>

<keycolumn="user_id"></key>

<many-to-manycolumn="address_id"class="Address"></many-to-many>

</set>

Address.hbm.xml

<setname="users"inverse="true"table="user_address>

<keycolumn="address_id"></key>

<many-to-manycolumn="user_id"class="User"/>

</set>

相关推荐