fxb248
留言簿
給我留言
查看公開留言
查看私人留言
隨筆分類
J2EE架構(gòu)
(rss)
java基礎
(rss)
ORM_Hibernate
(rss)
Spring
(rss)
文章分類
J2EE架構(gòu)
(rss)
JAVA基礎(1)
(rss)
ORM_Hibernate(3)
(rss)
Spring
(rss)
文章檔案
2011年10月 (4)
搜索
最新評論
Powered by:
博客園
模板提供:
滬江博客
BlogJava
|
首頁
|
發(fā)新隨筆
|
發(fā)新文章
|
聯(lián)系
|
聚合
|
管理
Hibernate之繼承映射
1.每個子類對應一張數(shù)據(jù)表
hbm和平常的沒有什么區(qū)別,一般是默認的隱式多態(tài)模式(polymorphism="implicit")。
優(yōu)點:實現(xiàn)簡單。
缺點:
a.不太支持多態(tài)關聯(lián)。假如有一個表和這個基類有外鍵關系,則不容易實現(xiàn)。
b.多態(tài)查詢也有問題,針對基類的查詢需要幾個select語句把所有子類都查一遍。
c.由于都復制了主表字段,如果基類發(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中可以進行嵌套。
優(yōu)點:數(shù)據(jù)邏輯劃分清晰。
缺點:多表操作帶來的性能損耗相當可觀。
3.整個類層次結(jié)構(gòu)映射到一張表
通過冗余字段的方式表達同數(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元素來確定類型字段,然后在各子類型中確定相應的類型字段值。讀取時,會根據(jù)這個類型字段值映射到相應的類型。
優(yōu)點:性能和簡單性方面都勝出一籌。
缺點:子類的字段都要設置為可為空,從數(shù)據(jù)庫完整性約束來說,沒有NOT NULL約束是一個嚴重的問題。
發(fā)表于 2011-10-24 22:16
輪回小圣
閱讀(304)
評論(0)
編輯
收藏
所屬分類:
ORM_Hibernate
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發(fā)表評論。
網(wǎng)站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關文章:
Hibernate之繼承映射
Hibernate中操作CLOB、BLOB字段
數(shù)據(jù)關聯(lián)之一對一關聯(lián)
主站蜘蛛池模板:
古交市
|
香港
|
沁阳市
|
尼玛县
|
竹北市
|
庄河市
|
博客
|
射洪县
|
阜新
|
五常市
|
鞍山市
|
应城市
|
汶川县
|
从江县
|
五寨县
|
金秀
|
涿州市
|
滦南县
|
旬阳县
|
岳池县
|
禹州市
|
高安市
|
红桥区
|
河源市
|
全南县
|
平乡县
|
雷波县
|
洪泽县
|
河北省
|
巩义市
|
和田市
|
衡阳市
|
高雄县
|
顺昌县
|
凭祥市
|
社会
|
怀远县
|
盐亭县
|
鄯善县
|
华池县
|
西和县
|