Hibernate常用注释收集3
映射继承关系
EJB支持3种类型的继承。
? Table per Class Strategy: the
? Single Table per Class Hierarchy Strategy: the
构一张表
? Joined Subclass Strategy: the
@Inheritance 注解来定义所选的之类策略。
每个类一张表
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class Flight implements Serializable {
有缺点,如多态查询或关联。Hibernate 使用 SQL Union 查询来实现这种策略。 这种策略
支持双向的一对多关联,但不支持 IDENTIFY 生成器策略,因为ID必须在多个表间共享。
一旦使用就不能使用AUTO和IDENTIFY生成器。
每个类层次结构一张表
@Entity
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(
name=”planetype”,
discriminatorType=DiscriminatorType.STRING
)
@DiscriminatorValue(“Plane”)
public class Plane { … }
@Entity
@DiscriminatorValue(“A320”)
public class A320 extends Plane { … }
整个层次结构中的所有父类和子类属性都映射到同一个表中,他们的实例通过一个辨别符列
(discriminator)来区分。
Plane 是父类。@DiscriminatorColumn 注解定义了辨别符列。对于继承层次结构中的每个类,
@DiscriminatorValue 注解指定了用来辨别该类的值。 辨别符列名字默认为 DTYPE,其默
认值为实体名。其类型为DiscriminatorType.STRING。
连接的子类
@Entity
@Inheritance(strategy=InheritanceType.JOINED)
public class Boat implements Serializable { … }
@Entity
public class Ferry extends Boat { … }
@Entity
@PrimaryKeyJoinColumn(name=”BOAT_ID”)
public class AmericaCupClass extends Boat { … }
以上所有实体使用 JOINED 策略 Ferry和Boat class使用同名的主键关联(eg: Boat.id =
Ferry.id), AmericaCupClass 和 Boat 关联的条件为 Boat.id = AmericaCupClass.BOAT_ID.
从父类继承的属性
@MappedSuperclass
public class BaseEntity {
@Basic
@Temporal(TemporalType.TIMESTAMP)
public Date getLastUpdate() { … }
public String getLastUpdater() { … }
…
}
@Entity class Order extends BaseEntity {
@Id public Integer getId() { … }
…
}
继承父类的一些属性,但不用父类作为映射实体,这时候需要 @MappedSuperclass 注解。 上
述实体映射到数据库中的时候对应 Order 实体Bean, 其具有 id, lastUpdate, lastUpdater 三
个属性。如果没有@MappedSuperclass 注解,则父类中属性忽略,这是 Order 实体 Bean 只
有 id 一个属性。
映射实体Bean的关联关系
一对一
使用 @OneToOne 注解可以建立实体Bean之间的一对一关系。一对一关系有3种情况。
? 关联的实体都共享同样的主键。
@Entity
public class Body {
@Id
public Long getId() { return id; }
@OneToOne(cascade = CascadeType.ALL)
@PrimaryKeyJoinColumn
public Heart getHeart() {
return heart;
}
…
}
@Entity
public class Heart {
@Id
public Long getId() { …}
}
通过@PrimaryKeyJoinColumn 注解定义了一对一的关联关系。
声明: 除非转自他站(如有侵权,请联系处理)外,本文采用 BY-NC-SA 协议进行授权 | 嗅谱网
转载请注明:转自《Hibernate常用注释收集3》
本文地址:http://www.xiupu.net/archives-274.html
关注公众号:
微信赞赏
支付宝赞赏