fxb248
留言簿
給我留言
查看公開留言
查看私人留言
隨筆分類
J2EE架構(gòu)
(rss)
java基礎(chǔ)
(rss)
ORM_Hibernate
(rss)
Spring
(rss)
文章分類
J2EE架構(gòu)
(rss)
JAVA基礎(chǔ)(1)
(rss)
ORM_Hibernate(3)
(rss)
Spring
(rss)
文章檔案
2011年10月 (4)
搜索
最新評論
Powered by:
博客園
模板提供:
滬江博客
BlogJava
|
首頁
|
發(fā)新隨筆
|
發(fā)新文章
|
聯(lián)系
|
聚合
|
管理
Hibernate之繼承映射
1.每個子類對應(yīng)一張數(shù)據(jù)表
hbm和平常的沒有什么區(qū)別,一般是默認(rèn)的隱式多態(tài)模式(polymorphism="implicit")。
優(yōu)點:實現(xiàn)簡單。
缺點:
a.不太支持多態(tài)關(guān)聯(lián)。假如有一個表和這個基類有外鍵關(guān)系,則不容易實現(xiàn)。
b.多態(tài)查詢也有問題,針對基類的查詢需要幾個select語句把所有子類都查一遍。
c.由于都復(fù)制了主表字段,如果基類發(fā)生了變動,所有表都需要變動。
2.每個類一張表
范例hbm文件如下:
<?
xml version="1.0"
?>
<!
DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
>
<!--
Generated 2011-10-17 17:49:02 by Hibernate Tools 3.4.0.CR1
-->
<
hibernate-mapping
>
<
class
name
="com.Martin.M.TItem"
table
="T_Item"
>
<
id
name
="id"
type
="java.lang.Integer"
>
<
column
name
="ID"
/>
<
generator
class
="increment"
/>
</
id
>
<
property
name
="name"
type
="java.lang.String"
column
="name"
/>
<
property
name
="manufacturer"
type
="java.lang.String"
column
="manufacturer"
/>
<
joined-subclass
table
="T_Book"
name
="com.Martin.M.TBook"
>
<
key
column
="id"
/>
<
property
name
="pageCount"
type
="java.lang.Integer"
column
="pageCount"
/>
</
joined-subclass
>
<
joined-subclass
table
="T_DVD"
name
="com.Martin.M.TDVD"
>
<
key
column
="id"
/>
<
property
name
="reginCode"
type
="java.lang.String"
column
="reginCode"
/>
</
joined-subclass
>
</
class
>
</
hibernate-mapping
>
不需要給子類編寫hbm文件。joined-subclass中可以進(jìn)行嵌套。
優(yōu)點:數(shù)據(jù)邏輯劃分清晰。
缺點:多表操作帶來的性能損耗相當(dāng)可觀。
3.整個類層次結(jié)構(gòu)映射到一張表
通過冗余字段的方式表達(dá)同數(shù)據(jù)類型,也就是一張表包含所有子類對象。
hbm范例文件如下:
<?
xml version="1.0"
?>
<!
DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
>
<!--
Generated 2011-10-17 17:49:02 by Hibernate Tools 3.4.0.CR1
-->
<
hibernate-mapping
>
<
class
name
="com.Martin.M.TItem"
table
="T_Item"
>
<
id
name
="id"
type
="java.lang.Integer"
>
<
column
name
="ID"
/>
<
generator
class
="increment"
/>
</
id
>
<
discriminator
column
="category"
type
="java.lang.String"
/>
<
property
name
="name"
type
="java.lang.String"
column
="name"
/>
<
property
name
="manufacturer"
type
="java.lang.String"
column
="manufacturer"
/>
<
subclass
name
="com.Martin.M.TBook"
discriminator
="1"
>
<
property
name
="pageCount"
type
="java.lang.String"
column
="pageCount"
/>
</
subclass
>
<
subclass
name
="com.Martin.M.TDVD"
discriminator
="2"
>
<
property
name
="reginCode"
type
="java.lang.String"
column
="reginCode"
/>
</
subclass
>
</
class
>
</
hibernate-mapping
>
它通過定義discriminator元素來確定類型字段,然后在各子類型中確定相應(yīng)的類型字段值。讀取時,會根據(jù)這個類型字段值映射到相應(yīng)的類型。
優(yōu)點:性能和簡單性方面都勝出一籌。
缺點:子類的字段都要設(shè)置為可為空,從數(shù)據(jù)庫完整性約束來說,沒有NOT NULL約束是一個嚴(yán)重的問題。
發(fā)表于 2011-10-24 22:16
輪回小圣
閱讀(300)
評論(0)
編輯
收藏
所屬分類:
ORM_Hibernate
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發(fā)表評論。
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關(guān)文章:
Hibernate之繼承映射
Hibernate中操作CLOB、BLOB字段
數(shù)據(jù)關(guān)聯(lián)之一對一關(guān)聯(lián)
主站蜘蛛池模板:
亚洲精品国产成人中文
|
亚洲成av人片在线观看无码不卡
|
亚洲人成激情在线播放
|
亚洲一区在线免费观看
|
亚洲无人区视频大全
|
国内精自视频品线六区免费
|
亚洲蜜芽在线精品一区
|
最近中文字幕电影大全免费版
|
亚洲精品综合一二三区在线
|
一区二区三区四区免费视频
|
亚洲黄网站wwwwww
|
日本zzzzwww大片免费
|
亚洲一区电影在线观看
|
成人永久福利免费观看
|
色爽黄1000部免费软件下载
|
亚洲精品无码久久久久去q
|
深夜福利在线视频免费
|
亚洲精品无码你懂的网站
|
久久一区二区免费播放
|
亚洲成AV人片在
|
1000部拍拍拍18勿入免费凤凰福利
|
亚洲免费人成在线视频观看
|
久久亚洲日韩看片无码
|
成人影片麻豆国产影片免费观看
|
亚洲AV香蕉一区区二区三区
|
亚洲精品国产精品乱码不卞
|
全黄性性激高免费视频
|
2022国内精品免费福利视频
|
亚洲国产高清人在线
|
好吊妞998视频免费观看在线
|
免费一级毛片在线播放放视频
|
久久亚洲精品国产精品黑人
|
三年片在线观看免费大全
|
精品亚洲视频在线
|
亚洲国产精品VA在线看黑人
|
91在线视频免费91
|
www成人免费观看网站
|
亚洲人成综合在线播放
|
色久悠悠婷婷综合在线亚洲
|
h视频在线观看免费网站
|
欧洲乱码伦视频免费国产
|