hibernate 学习笔记三
高级映射
-----------------
集合类映射
Set
表上:
tableitemtableimage
id<PK>item_id<FK><PK>
namefilename<PK>
类上:
classItem
id
name
Set
映射文件上:
Item.hbm.xml
<setname="images"table="hedong_image">
<keycolumn="item_id"/>
<elementtype="string"column="filename"not-null="true"/>
</set>
lazy
可以设置Hibernate关联表中信息的加载策略
true:采用延迟加载
false:不采用延迟加载
如果采用延迟加载,在session关闭后还想进行操作可以使用Hibernate.initialize()进行预加载
Bag
表上:
tableitemtableimage
id<PK>id<PK>
namefilename
item_id<FK>
类上:
classItem
id
name
List
映射文件上:
Item.hbm.xml
<idbagname="images"table="hedong_image_bag">
<collection-idtype="int"column="id">
<generatorclass="increment"></generator>
</collection-id>
<keycolumn="item_id"></key>
<elementtype="string"column="filename"></element>
</idbag>
List
表上:
tableitemtableimage
id<PK>item_id<FK,PK>
namefilename
position<PK>
类上:
classItem
id
name
List
映射文件上:
Item.hbm.xml
<listname="images"table="hedong_image_list>
<keycolumn="item_id"/>
<indexcolumn="position"/>
<elementtype="string"column="filename"/>
</list>
Map
表上:
tableitemtableimage
id<PK>item_id<FK,PK>
image_name<PK>
namefilename
类上:
classItem
id
name
Map
映射文件上:
Item.hbm.xml
<mapname="images"table="hedong_image_map"order-by="image_name">
<keycolumn="item_id"></key>
<indexcolumn="image_name"type="string"/>
<elementtype="string"column="filename"></element>
</map>
组件映射(component)
有关联关系的多个POJO类映射到一张表上
继承映射
是否支持多态更新维护是否方便出具报表是否方便
每个子类一张表NoNoYes
整个类层次一张表YesNoYes
每个类一张表YesYesNo
1、每个子类一张表
表上:
createtablehedong_cash_payment(
payment_idnumber(7)primarykey,
amoutnumber
);
createtablehedong_credit_payment(
payment_idnumber(7)primarykeym
amoutnumber,
cardtypevarchar2(20)
);
createtablehedong_cheque_payment(
payment_idnumber(7)primarykey,
amoutnumber,
chequenonumber
);
类上:
PaymentCashPaymentCreditPaymentChequePayment
映射文件上:
com.briup.sixth.concrete.Payment.hbm.xml
2、整个类层次一张表
表上:
createtablehedong_payment(
payment_idnumber(7)primarykey,
amountnumber,
cardtypevarchar2(20),
chequenonumber,
paytypevarchar2(10)
);
类上:
PaymentCashPaymentCreditPaymentChequePayment
映射文件上:
com.briup.sixth.hierarchy.Payment.hbm.xml
Hibernate对集合元素排序
1、sort:在内存中排序
sort="natural":按ASCII码值排序
2、order-by:在数据库中排序
order-by="字段名"