Hibernate继承映射三种策略学习
2011-09-18 22:48
417 查看
假设实体关系如下:
继承映射三种策略:
每个类分层结构 一张表 Table per class hierarchy
<!-- 每个类分层结构 一张表 Table per class hierarchy -->
<!-- 只有一张表 -->
注:但此PAYMENT_TYPE字段并未在类属性中,只存在映射文件和数据库表中
每个子类一张表 Table per subclass
这种继承映射策略,每个类一张表,抽象类也有表,则共建三张表,要求子表有个字段id,因为此策略要求子表和父表是一对一的关系
注:子表的id字段并未在类属性中,只存在映射文件和数据库表中
每个具体类一个张表 Table per concrete class
这种继承映射策略,每个具体类一张表,则此策略共建两张表,这种策略不支持identity生成策略,要求整个继承结构即所有表所有记录的id不能重复
继承映射三种策略:
每个类分层结构 一张表 Table per class hierarchy
<!-- 每个类分层结构 一张表 Table per class hierarchy -->
<!-- 只有一张表 -->
<!-- 每个类分层结构 一张表 Table per class hierarchy --> <!-- 只有一张表 --> <class name="Payment"> <id name="id"> <generator class="native" /> </id> <discriminator column="PAYMENT_TYPE" type="string" /> <property name="typeName" /> <property name="amount" /> <subclass name="Credit" discriminator-value="CREDIT"> <property name="number" /> <property name="type" /> <property name="expDate" /> </subclass> <subclass name="Cash" discriminator-value="CASH"> <property name="cashTenderd" /> </subclass> <subclass name="Check" discriminator-value="CHECK"> <property name="name" /> <property name="bankId" /> </subclass> </class>这种继承映射策略,整个继承结构一张表,则此策略共建一张表,要求字段不能有非空约束,而且要添加多一个字段表示类型(如这里的PAYMENT_TYPE)
注:但此PAYMENT_TYPE字段并未在类属性中,只存在映射文件和数据库表中
每个子类一张表 Table per subclass
<!-- 每个子类一张表 Table per subclass --> <!-- 共三张表 --> <class name="Payment"> <id name="id"> <generator class="native" /> </id> <property name="typeName" /> <property name="amount" /> <joined-subclass name="Credit"> <key column="id"></key> <property name="number" /> <property name="type" /> <property name="expDate" /> </joined-subclass> <joined-subclass name="Cash"> <key column="id"></key> <property name="cashTenderd" /> </joined-subclass> <joined-subclass name="Check" table="Check_"> <key column="id"></key> <property name="name" /> <property name="bankId" /> </joined-subclass> </class>
这种继承映射策略,每个类一张表,抽象类也有表,则共建三张表,要求子表有个字段id,因为此策略要求子表和父表是一对一的关系
注:子表的id字段并未在类属性中,只存在映射文件和数据库表中
每个具体类一个张表 Table per concrete class
<!-- 每个具体类一张表 Table per concrete class --> <!-- 共两张表 --> <class name="Payment"> <id name="id"> <generator class="hilo"> <param name="table">hi_value</param> <param name="column">next_value</param> <param name="max_lo">100</param> </generator> </id> <property name="typeName" /> <property name="amount" /> <union-subclass name="Credit"> <property name="number" /> <property name="type" /> <property name="expDate" /> </union-subclass> <union-subclass name="Cash"> <property name="cashTenderd" /> </union-subclass> <union-subclass name="Check" table="Check_"> <property name="name" /> <property name="bankId" /> </union-subclass> </class>
这种继承映射策略,每个具体类一张表,则此策略共建两张表,这种策略不支持identity生成策略,要求整个继承结构即所有表所有记录的id不能重复
相关文章推荐
- hibernate继承的三种映射策略( Inheritance mapping)
- Hibernate支持三种基本的继承映射策略:
- Hibernate学习17 -- 关联映射7 -- 继承映射1 -- 一张表存储
- Hibernate继承映射的三种方式
- HIbernate继承映射策略
- Hibernate映射类继承之混合继承策略
- Hibernate之jpa实体映射的三种继承关系
- Hibernate系列学习之映射持久化类--标识符生成策略
- 通过 Hibernate 实现 JPA 对象关系模型之继承映射策略
- 【Hibernate学习笔记】映射继承关系
- Hibernate 学习笔记07 --集合映射_&_继承映射
- Hibernate学习---第八节:继承关系的映射配置
- Hibernate学习笔记:继承映射之每个子类一张表,使用辨别标志
- hibernate继承映射策略之每个子类一张表
- Hibernate学习18 -- 关联映射8 -- 继承映射2 -- 父类存储在一张表,子类分别存储一张表
- Hibernate 3.2 学习笔记 映射继承关系
- 通过 Hibernate 实现 JPA 对象关系模型之继承映射策略
- Hibernate之jpa实体映射的三种继承关系
- Hibernate继承映射的两种策略
- hibernate3.3.2学习笔记---映射继承的关系