EJB3.0 开发指南之实体 Bean 的继承
2005-02-14
在 EJB3.0 中,实体 Bean 可以实现继承关系。 比如有个 Person 的实体 bean,它有姓名和性别两个属
性。
上帝和女娲造人的时候,造出两种人:Man 和 Woman。Man 和 Woman 都是实体 Bean,而且他
们都继承 Person。
单一表策略就是副实体和子实体的数据都存放在一张表中,同时指定一列用来区别这些实体。
如:
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE, discriminatorType = DiscriminatorType.STRING)
@DiscriminatorColumn(name = "P_TYPE", nullable = true)
@ Inheritance 的注释声明如下:
@ @Target({TYPE}) @Retention(RUNTIME)
public @interface Inheritance {
InheritanceType strategy() default SINGLE_TABLE;
DiscriminatorType discriminatorType() default STRING;
String discriminatorValue() default "";
}
这个注释用来指定继承使用的策略,以及为了区别这些实体所用的列的类型与值。
@DiscriminatorColumn 注释用在单一表策略和联合表策略上。用来指定区别各实体所需的列。
@Target({TYPE}) @Retention(RUNTIME)
public @interface DiscriminatorColumn {
String name() default "";
boolean nullable() default false;
String columnDefinition() default "";
int length() default 10;
}
这个例子主要有以下几个文件,这个例子主要实现了 Person 和 Man、Woman 之间的继承关系,下
面两章介绍的例子和这个例子相同。Man 和 Woman 继承 Person 实体 Bean。前面的例子一样,我们还是
使用 Client 测试。
Person.java:实体 Bean。
评论1