JPA对象关系模型之继承映射策略
2012-10-05 16:54
239 查看
Single-table 策略:这是继承映射中的缺省策略,在不特别指明的情况下,系统默认就是采用这种映射策略进行映射的。这个策略的映射原则就是父类包括子类中新添加的属性全部映射到一张数据库表中,数据库表中有一个自动生成的字段用来存储区分不同的子类的信息。
Joined-subclass 策略:这种映射策略中,继承关系中的每一个实体类,无论是具体类 (concrete entity) 或者抽象类 (abstract entity),数据库中都有一个单独的表与他对应。子实体对应的表中不含有从根实体继承而来的属性,它们之间通过共享主键的方式进行关联。
Table-per-concrete-class 策略:这个策略就是将继承关系中的每一个实体映射到数据库中的一个单独的表中,与“Joined”策略不同的是,子实体对应的表中含有从根实体继承而来的属性。这种策略在
JPA2.0 中仍然是自由选取得,也就是说实现 JPA2.0 规范的持久化引擎,如 Toplink,Hibernate 等 , 仍然可以自由选取是否实现这种策略。
得益于注解 (annotation) 方式的使用,JPA 2.0 中实现继承关系的映射非常简单。当实体 (entity) 之间有继承关系的时候,一定有一个根实体 (root entity),JPA2.0 中只需要在这个根实体 (root entity) 上标注 @Inheritance 注解并且指明想要采用的映射策略就可以了。如果是不用 @Inheritance 注解,或者使用了 @Inheritance 注解但是没有指明所要采用的映射策略的时候,默认就是采用单表策略 (Single-table strategy)。下面用图
1 这个继承关系分别说明这三种映射策略的使用。
Joined-subclass 策略:这种映射策略中,继承关系中的每一个实体类,无论是具体类 (concrete entity) 或者抽象类 (abstract entity),数据库中都有一个单独的表与他对应。子实体对应的表中不含有从根实体继承而来的属性,它们之间通过共享主键的方式进行关联。
Table-per-concrete-class 策略:这个策略就是将继承关系中的每一个实体映射到数据库中的一个单独的表中,与“Joined”策略不同的是,子实体对应的表中含有从根实体继承而来的属性。这种策略在
JPA2.0 中仍然是自由选取得,也就是说实现 JPA2.0 规范的持久化引擎,如 Toplink,Hibernate 等 , 仍然可以自由选取是否实现这种策略。
得益于注解 (annotation) 方式的使用,JPA 2.0 中实现继承关系的映射非常简单。当实体 (entity) 之间有继承关系的时候,一定有一个根实体 (root entity),JPA2.0 中只需要在这个根实体 (root entity) 上标注 @Inheritance 注解并且指明想要采用的映射策略就可以了。如果是不用 @Inheritance 注解,或者使用了 @Inheritance 注解但是没有指明所要采用的映射策略的时候,默认就是采用单表策略 (Single-table strategy)。下面用图
1 这个继承关系分别说明这三种映射策略的使用。
相关文章推荐
- 通过 Hibernate 实现 JPA 对象关系模型之继承映射策略
- 通过 Hibernate 实现 JPA 对象关系模型之继承映射策略
- 通过 Hibernate 实现 JPA 对象关系模型之继承映射策略
- 通过 Hibernate 实现 JPA 对象关系模型之继承映射策略 (剖析DTPYE的横空出世)
- 通过 Hibernate 实现 JPA 对象关系模型之继承映射策略
- 通过 Hibernate 实现 JPA 对象关系模型之继承映射策略
- 通过 Hibernate 实现 JPA 对象关系模型之继承映射策略
- 通过 Hibernate 实现 JPA 对象关系模型之继承映射策略
- JPA实体继承实体的映射策略
- JPA实体继承实体的映射策略
- JPA实体继承关系的映射策略
- JPA实体继承实体的映射策略
- JPA实体继承实体的映射策略
- JPA实体继承实体的映射策略
- JPA实体继承实体的映射策略
- 在JPA中,实体继承关系的映射策略共有三种:单表继承策略(table per class)、Joined策略(table per subclass)和Table_PER_Class策略。
- JPA实体继承实体的映射策略
- hibernate继承的三种映射策略( Inheritance mapping)
- Hibernate继承映射三种策略学习
- hibernate继承策略之单表映射