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="字段名"

相关推荐