JPA 对象继承策略

Java persistence api最早是EJB的一部分,在EJB3时候被分离出来JPA1.0,之后出现了JPA2.0、2.1。不同公司发布了Hibernate, Eclipselink, Toplink, Spring Data JPA等。

Generally, Java developers use lots of code, or use the proprietary framework to interact with the database, whereas using JPA, the burden of interacting with the database reduces significantly. It forms a bridge between object models (Java program) and relational models (database program).

JPA用来将业务逻辑和数据库的逻辑联系起来。简单说来,数据库包括的数据源和数据操作都可以采用java级别的code表现出来。

Database级别表示Java应用级别表示描述
Source dataEntity持久化对象
Read, Update, DeleteQuery, EntityManager属于DAO层
SavePersistence静态获取EntityManagerFactory的实例
TransactionEntityManagerFactory, Entity transaction,service层

现在问题来了,如果对象之间存在继承(Inheritance)关系,那是不是就必须要见不同的表呢?这时就需要在给父类加上继承策略(共有三种:SINGLE_TABLE、JOINED_TABLE、TABLE_PER_CONCRETE_CLASS)
用法如下:

@Inheritance( strategy = “你选择的继承策略”)

@Entity
@Table
@Inheritance( strategy = InheritanceType.TABLE_PER_CLASS )

public class Parent implements Serializable {
 //
}

Child class

@Entity
@Table
public class Child extends Parent {
 //
}
  • Single Table strategy
    所有的列都会存到同一张表里面;
  • Table per class strategy
    这个很好理解,一张表对应一个class,有多少个child class就创建多少张表;
  • Joined table Strategy
    创建parent和多张child class表,但是parent外键对应子表的主键。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值