Single-table policy: This is the default policy in the inheritance map, which is mapped using this mapping strategy, not specifically specified. The mapping principle for this policy is that the parent class, including the newly added attributes in the subclass, is mapped to a database table, and an automatically generated field in the database table is used to store information that distinguishes the different subclasses.
Joined-subclass policy: In this mapping strategy, each entity class in the inheritance relationship, whether a specific class (concrete entity) or abstract class (abstract entity), has a separate table in the database that corresponds to him. A child entity corresponds to a table that does not contain attributes inherited from the root entity, and is associated in a way that is shared by a primary key.
Table-per-concrete-class policy: This strategy is to map each entity in an inheritance relationship to a separate table in the database, and unlike the "joined" policy, a child entity corresponds to a table that contains attributes inherited from the root entity. This strategy is still freely chosen in the JPA2.0, that is to say, implementing the JPA2.0 specification's persistence engine, such as Toplink,hibernate, is still free to choose whether or not to implement this strategy.
Thanks to the use of the annotation (annotation) approach, the mapping of the inheritance relationship in JPA 2.0 is straightforward. When there is an inheritance relationship between entities (entity), there must be a root entity (root entity), in which the annotation @Inheritance annotation on the root entity (root entity) is required and the mapping strategy you want to use is indicated. The default is to use a single table policy (Single-table strategy) If you do not need to @Inheritance annotations, or if you use @Inheritance annotations but do not indicate the mapping strategy you want to adopt. The following inheritance relationship with Figure 1 illustrates the use of these three mapping strategies respectively.
Diagram 1.Item, Magazine, Phone inheritance relationship UML class diagram
The item class defines the Title, price, and Description attributes, where the Magazine class and the Phone class inherit the item class and add their own unique properties, Magazine add ISBN and Publisher properties to the The Factory and Durationtime properties are added to the Phone.
Single Table mapping policy
A single table (single-table) map is the default mapping strategy in an inheritance map, which is used by default when not specified in the root entity (root entity). In this example, the root entity (root entity) refers to the entity Item class.
Listing 1. Item entity defined as a single table map
@Entity public class Item implements Serializable {private static final long serialversionuid = 1L; @Id @GeneratedValue ( Strategy = Generationtype.auto) private Long ID; Private String title; Private Float Price; Private String decription; Getters and Setters}
The Item entity class is not annotated with @Inheritance this annotation (annotation), stating that a single table mapping strategy is used in this inheritance relationship. The item entity class is also the root entity of the Phone entity class and the Magazine entity class (Root entity), which inherits the item's properties and has its own unique properties.
Listing 2.Phone entity inherits from Item entity
@Entity public class Phone extends Item {private String http://www.aliyun.com/zixun/aggregation/16557.html ">factory; Private Float Durationtime; Getters and Setters}
Listing 3.Magazine entity inherits from Item entity
@Entity public class Magazine extends Item {private string ISBN; private string publisher;//getters and Setters}