hibernate对于子类的映射有3种方式,这里描述的是每个具体子类一张表的方式。
这种策略是使用union-subclass标签来定义子类的。每个子类对应一张表,而且这个表的信息是完备的,即包含了所有从父类继承下来的属性映射的字段(这就是它跟joined-subclass的不同之处,joined-subclass定义的子类的表,只包含子类特有属性映射的字段)。实现这种策略的时候,有如下步骤:
1、父类用普通标签定义即可
2、子类用标签定义,在定义union-subclass的时候,需要注意如下几点:
a)Union-subclass标签不再需要包含key标签(与joined-subclass不同);
b)Union-subclass标签,既可以被class标签所包含(这种包含关系正是表明了类之间的继承关系),也可以与class标签平行。当Union-subclass标签的定义与class标签平行的时候,需要在Union-subclass标签中,添加extends属性,里面的值是父类的全路径名称;
c)子类的其它属性,像普通类一样,定义在Union-subclass标签的内部。这个时候,虽然在union-subclass里面定义的只有子类的属性,但是因为它继承了父类,所以,不需要定义其它的属性,在映射到数据库表的时候,依然包含了父类的所有属性的映射字段。
union-subclass problem:
maybe we want to use union-subclass to represent a subclass, but if you want
to use 'native' generator, it will throw exception:
MappingException: Cannot use identity column key generation with <union-subclass>
The reason is Using identity generator, you cannot share the same id seed between
different tables. And the id has to be unique whithin the hierarchy.
'Sequence' generator will be ok, but not work on MySQL.
NOTICE: 'hilo' will work, but HibernateTemplate.merge() will delay one command, so
after merge and immediately query data will not get right result.
分享到:
相关推荐
5.1.17. 联合子类(union-subclass) 5.1.18. 连接(join) 5.1.19. 键(key) 5.1.20. 字段和规则元素(column and formula elements) 5.1.21. 引用(import) 5.1.22. any 5.2. Hibernate 的类型 5.2.1. 实体...
5.1.17. 联合子类(union-subclass) 5.1.18. 连接(join) 5.1.19. 键(key) 5.1.20. 字段和规则元素(column and formula elements) 5.1.21. 引用(import) 5.1.22. any 5.2. Hibernate 的类型 5.2.1. 实体...
5.1.17. 联合子类(union-subclass) 5.1.18. 连接(join) 5.1.19. 键(key) 5.1.20. 字段和规则元素(column and formula elements) 5.1.21. 引用(import) 5.1.22. any 5.2. Hibernate 的类型 5.2.1. 实体...
5.1.17. 联合子类(union-subclass) 5.1.18. 连接(join) 5.1.19. 键(key) 5.1.20. 字段和规则元素(column and formula elements) 5.1.21. 引用(import) 5.1.22. any 5.2. Hibernate 的类型 5.2.1. 实体(Entities)和...
9. **继承映射**: 对于类继承结构,Hibernate提供了单表、子类表和联合表三种策略进行映射。 10. **延迟加载(Lazy Loading)**: 为提高性能,Hibernate允许对象属性的延迟加载,只有在真正使用时才会从数据库中...
4. **联合继承( Joined Table Inheritance)**: 每个子类对应数据库中的一个独立表,公共属性存储在一个基础表中,子类特有的属性存储在各自的表中。 - join column: 基础表和子类表通过外键关联。 - 优点: ...
5.1.17. 联合子类(union-subclass) 5.1.18. 连接(join) 5.1.19. 键(key) 5.1.20. 字段和规则元素(column and formula elements) 5.1.21. 引用(import) 5.1.22. any 5.2. Hibernate 的类型 5.2.1. 实体...
在Hibernate中,联合继承是一种映射策略,适用于具有复杂继承结构的情况。在这种策略下,每个子类都有自己的数据库表,而父类的公共属性被存储在一个单独的共享表中。子类表通过外键与共享表关联。 **如何使用注解...
假设有一个抽象的`Animal`类,以及它的两个子类`Dog`和`Cat`,在Hibernate映射文件中可能会这样配置: ```xml ``` 这样,`Animal`类的`name`属性会被映射到`ANIMAL`表,`Dog`和`Cat`的...
-- Cat 的特定属性 --> </subclass></class>1.3.2 联合继承(Joined Table Inheritance)每个子类都有自己的数据库表,公共属性存储在父类表中,子类特有的属性存储在子类表中。子类表通过外键关联到父类表。1.3.3 ...
Hibernate支持四种继承映射策略:单表继承(Single Table Inheritance)、联合继承( Joined Subclass)、表 per 类继承(Table per Class Inheritance)和子类表(Concrete Table Inheritance)。在实际应用中,最...
联合子类(union-subclass) 6.1.17. 连接(join) 6.1.18. 键(key) 6.1.19. 字段和规则元素(column and formula elements) 6.1.20. 引用(import) 6.1.21. any 6.2. Hibernate 的类型 6.2.1. 实体(Entities)和...
不过,需要注意的是,随着类继承层次的加深,单表继承可能会导致表中出现很多不必要的字段,这对于大型系统可能会造成空间浪费和查询效率下降。因此,在选择继承映射策略时,应根据具体的应用场景和需求来权衡。 在...
联合子类(union-subclass) 6.1.17. 连接(join) 6.1.18. 键(key) 6.1.19. 字段和规则元素(column and formula elements) 6.1.20. 引用(import) 6.1.21. any 6.2. Hibernate 的类型 6.2.1. 实体(Entities)和...
联合子类(union-subclass) 5.1.18. 连接(join) 5.1.19. 键(key) 5.1.20. 字段和规则元素(column and formula elements) 5.1.21. 引用(import) 5.1.22. any 5.2. Hibernate 的类型 5.2.1. 实体(Entities)和...
5.1.17. 联合子类(union-subclass) 5.1.18. 连接(join) 5.1.19. 键(key) 5.1.20. 字段和规则元素(column and formula elements) 5.1.21. 引用(import) 5.1.22. any 5.2. Hibernate 的类型 5.2.1. 实体...
Hibernate支持表的继承映射,如单表继承、联合继承和子类表继承,使得多态性在数据库层得以体现。 10. **事务管理** Hibernate支持JTA(Java Transaction API)和JDBC事务管理,可以根据应用需求选择合适的方式。...
在Java世界中,ORM(对象关系映射)框架如Hibernate极大地简化了数据库操作。本篇文章主要探讨的是Hibernate的继承映射策略,特别是“每个类分层结构一张表”(Table per Concrete Class)的方式。这种映射策略是...
- **第二级缓存(Second-Level Cache)**:跨会话的缓存,可选,提高性能但需注意并发问题。 - **查询缓存(Query Cache)**:缓存查询结果,减少对数据库的访问。 6. **关联映射**: - **一对一(OneToOne)**...
联合子类(union-subclass) 6.1.17. 连接(join) 6.1.18. 键(key) 6.1.19. 字段和规则元素(column and formula elements) 6.1.20. 引用(import) 6.1.21. any 6.2. Hibernate 的类型 6.2.1. 实体(Entities)...