Hibernate4继承映射
来源:互联网 发布:淘宝使用他人图片扣分 编辑:程序博客网 时间:2024/06/01 10:00
Hibernate 支持三种基本的继承映射策略:
1、单表继承:每棵类继承树使用一个表
2、具体表继承:每个子类一个表
3、类表继承:每个具体类一个表(有一些限制)
三种方式的比较:
1、所有类映射成一张表会产生数据冗余(不过这是通常采用的方法)
2、每个类映射成一张表会有效率问题,比如是三层或四层结构时,对于查询或更新会发出很多sql语句
3、具体类映射成表的缺点是主键不能自增
结论:使用第一种方式
- /** 动物 */
- public class Animal {
- private Integer id;
- private String name;
- private String type;
- //getter and setter
- }
- /** 猪 */
- public class Pig extends Animal {
- private Double weight;
- //getter and setter
- }
- /** 鸟 */
- public class Bird extends Animal{
- private String color;
- //getter and setter
- }
- <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>
下面是基于注解的
- /** 动物 */
- @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
- }
- /** 猪 */
- @Entity
- @DiscriminatorValue("p")
- public class Pig extends Animal {
- private Double weight;
- //getter and setter
- }
- /** 鸟 */
- @Entity
- @DiscriminatorValue("b")
- public class Bird extends Animal {
- private String color;
- // getter and setter
- }
0 0
- Hibernate4继承映射
- Hibernate4-8 映射继承关系
- Hibernate4自学入门(九)——映射继承
- Hibernate4学习总结(3)--注解形式的基础映射,主键映射,基本属性映射,复合属性映射,继承映射。
- hibernate4组件映射
- Hibernate4组件映射
- Hibernate4关系映射总结
- Hibernate4-组合主键映射
- Hibernate4-集合映射
- Hibernate4.2 枚举映射问题
- Hibernate4一对多关系映射
- hibernate4 映射集合属性List
- hibernate4 集合属性映射Array
- hibernate4 映射集合属性 set
- hibernate4 映射集合属性 bag
- hibernate4 映射集合属性Map
- hibernate4.x映射对象标识符
- Hibernate4使用注解关系映射
- 【c++】念数字
- cordova安装
- CSS段落首行缩进
- socks5 proxy for http proxy
- Mac下安装brew
- Hibernate4继承映射
- iOS网络开发 - 浏览器
- Android UI 之使用java代码实现动态添加LinearLayout(一)
- 51nod1009 数字1的数量
- 编程珠玑之左旋转一个字符串
- js的块级作用域问题
- UML时序图(序列图)
- ubuntu 14.04 启用nfs连接开发板
- 学习小结—2016.3.21(周一)18:11;于3.31晚宿舍续写