日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Hibernate4继承映射

發布時間:2025/6/15 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hibernate4继承映射 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Hibernate 支持三種基本的繼承映射策略:

1、單表繼承:每棵類繼承樹使用一個表
2、具體表繼承:每個子類一個表
3、類表繼承:每個具體類一個表(有一些限制)


三種方式的比較:
1、所有類映射成一張表會產生數據冗余(不過這是通常采用的方法)
2、每個類映射成一張表會有效率問題,比如是三層或四層結構時,對于查詢或更新會發出很多sql語句
3、具體類映射成表的缺點是主鍵不能自增

結論:使用第一種方式

?

Java代碼 ?
  • /**?動物?*/??
  • public?class?Animal?{??
  • ??
  • ????private?Integer?id;??
  • ????private?String?name;??
  • ????private?String?type;??
  • ??
  • ????//getter?and?setter??
  • }??
  • ?

    Java代碼 ?
  • /**?豬?*/??
  • public?class?Pig?extends?Animal?{??
  • ??
  • ????private?Double?weight;??
  • ??????
  • ????//getter?and?setter??
  • }??
  • ?

    Java代碼 ?
  • /**?鳥?*/??
  • public?class?Bird?extends?Animal{??
  • ??
  • ????private?String?color;??
  • ??????
  • ????//getter?and?setter??
  • }??
  • ?

    Xml代碼 ?
  • <hibernate-mapping?package="org.monday.hibernate4.domain">??
  • ????<class?name="Animal"?table="tbl_animal">??
  • ????????<id?name="id">??
  • ????????????<generator?class="identity"?/>??
  • ????????</id>??
  • ????????<!--?辨別者列?-->??
  • ????????<discriminator?column="type"?type="string"?/>??
  • ????????<property?name="name"?/>??
  • ????????<!--?子類?-->??
  • ????????<subclass?name="Pig"?discriminator-value="p">??
  • ????????????<property?name="weight"?/>??
  • ????????</subclass>??
  • ????????<!--?子類?-->??
  • ????????<subclass?name="Bird"?discriminator-value="b">??
  • ????????????<property?name="color"?/>??
  • ????????</subclass>??
  • ????</class>??
  • </hibernate-mapping>??
  • ?下面是基于注解的

    ?

    Java代碼 ?
  • /**?動物?*/??
  • @Entity??
  • @Table(name?=?"tbl_animal")??
  • @Inheritance(strategy?=?InheritanceType.SINGLE_TABLE)??
  • @DiscriminatorColumn(name?=?"type",?discriminatorType?=?DiscriminatorType.STRING)??
  • @DiscriminatorValue("a")??
  • public?class?Animal?{??
  • ??
  • ????@Id??
  • ????@GeneratedValue(strategy?=?GenerationType.IDENTITY)??
  • ????private?Integer?id;??
  • ??
  • ????private?String?name;??
  • ??
  • ????//?getter?and?setter??
  • }??
  • ?

    Java代碼 ?
  • /**?豬?*/??
  • @Entity??
  • @DiscriminatorValue("p")??
  • public?class?Pig?extends?Animal?{??
  • ??
  • ????private?Double?weight;??
  • ??????
  • ????//getter?and?setter??
  • }??
  • ?

    Java代碼 ?
  • /**?鳥?*/??
  • @Entity??
  • @DiscriminatorValue("b")??
  • public?class?Bird?extends?Animal?{??
  • ??
  • ????private?String?color;??
  • ??
  • ????//?getter?and?setter??
  • }?
  • 總結

    以上是生活随笔為你收集整理的Hibernate4继承映射的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。