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>