JPA 实现继承关系

标签: jpa 继承 关系 | 发表时间:2012-03-15 03:14 | 作者:
出处:http://www.iteye.com

JPA支持继承关系,使开发者可以利用继承的思想建模。

       有一个实体Person,他是一个抽象实体,他有两个子实体:Man,Woman。

 

       先写Person类:

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
//@DiscriminatorColumn(name="tableName")可选
public class Base implements Serializable {

 /**
  *
  */
 private static final long serialVersionUID = 1L;
 private Date createTime = new Date();
 
 @Id
 @GeneratedValue
 private int id;

。。。

}

注意,对于抽象父类,必须设置两个注释:

1.         Inheritance     strategy:用来声明继承策略。可选值是InheritanceType.SINGLE_TABLE(为类继承体系中的每个类创建一张相同的表)、InheritanceType.JOINED(为类继承体系中的每个类创建不同的表)和InheritanceType .TABLE_PER_CLASS(不推荐)。缺省值是InheritanceType.SINGLE_TABLE,表示只生成一张表。

2.         DiscriminatorColumn     name:用来说明子类使用那个字段区分,这里使用sex字段区分Man实体和Woman实体。

 

 

编写Man类和Woman类:

@Entity
//@DiscriminatorValue(value="users")可选
public class Users extends Base implements Serializable {
 
 private String remark="";

。。。

}

 

@Entity
//@DiscriminatorValue(value="role")可选
public class Role extends Base implements Serializable {
 
 private String name = "";

 

。。。

}

生成多张表:

 DiscriminatorColumn、 DiscriminatorValue不要设置,

 数据库中有3张表:base(id,createTime)、users(remark)、role(name)

添加user:

Hibernate: insert into Base (createTime) values (?)
Hibernate: insert into Users (remark, id) values (?, ?)

添加role:

Hibernate: insert into Base (createTime) values (?)
Hibernate: insert into Role (name, id) values (?, ?)

删除同删、修改同改、添加同加。

 

 

生存同一张表:

子类实体只需要设置DiscriminatorValue属性,当sex值为0时表示Man对象(此对象的womanService字段为null),当sex值为1时表示Woman对象(此对象的manService字段为null)。

数据库有1张表:base(id,createTime,remark,name);

 



    本文附件下载:
  • src.rar (5.1 KB)


已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [jpa 继承 关系] 推荐:

JPA 实现继承关系

- - ITeye博客
JPA支持继承关系,使开发者可以利用继承的思想建模.        有一个实体Person,他是一个抽象实体,他有两个子实体:Man,Woman.        先写Person类:. //@DiscriminatorColumn(name="tableName")可选. 注意,对于抽象父类,必须设置两个注释:.

JPA & Hibernate 注解

- - CSDN博客编程语言推荐文章
必须,name为可选,对应数据库中一的个表 . 可选,通常和@Entity配合使用,只能标注在实体的class定义处,表示实体对应的数据库表的信息 . name:可选,表示表的名称.默认地,表名和实体名称一致,只有在不一致的情况下才需要指定表名 . catalog:可选,表示Catalog名称,默认为Catalog(""). .

使用 Spring Data JPA 简化 JPA 开发

- -
Spring Data JPA 让一切近乎完美. 通过前面的分析可以看出,Spring 对 JPA 的支持已经非常强大,开发者只需关心核心业务逻辑的实现代码,无需过多关注 EntityManager 的创建、事务处理等 JPA 相关的处理,这基本上也是作为一个开发框架而言所能做到的极限了. 然而,Spring 开发小组并没有止步,他们再接再厉,于最近推出了 Spring Data JPA 框架,主要针对的就是 Spring 唯一没有简化到的业务逻辑代码,至此,开发者连仅剩的实现持久层业务逻辑的工作都省了,唯一要做的,就只是声明持久层的接口,其他都交给 Spring Data JPA 来帮你完成.

Spring Data JPA 简单介绍

- tangfl - BlogJava-首页技术区
考虑到公司应用中数据库访问的多样性和复杂性,目前正在开发UDSL(统一数据访问层),开发到一半的时候,偶遇SpringData工程. 于是就花了点时间了解SpringData,可能UDSL II期会基于SpringData做扩展. 介绍:针对关系型数据库,KV数据库,Document数据库,Graph数据库,Map-Reduce等一些主流数据库,采用统一技术进行访问,并且尽可能简化访问手段.

spring data jpa简单实例

- - 编程语言 - ITeye博客
我们都知道Spring是一个非常优秀的JavaEE整合框架,它尽可能的减少我们开发的工作量和难度.   在持久层的业务逻辑方面,Spring开源组织又给我们带来了同样优秀的Spring Data JPA.   通常我们写持久层,都是先写一个接口,再写接口对应的实现类,在实现类中进行持久层的业务逻辑处理.

了解 Spring Data JPA - hungerW

- - 博客园_首页
自 JPA 伴随 Java EE 5 发布以来,受到了各大厂商及开源社区的追捧,各种商用的和开源的 JPA 框架如雨后春笋般出现,为开发者提供了丰富的选择. 它一改之前 EJB 2.x 中实体 Bean 笨重且难以使用的形象,充分吸收了在开源社区已经相对成熟的 ORM 思想. 另外,它并不依赖于 EJB 容器,可以作为一个独立的持久层技术而存在.

GitHub - smartnews/jpa-entity-generator: Lombok-wired JPA entity source code generator, Gradle and Maven supported.

- -
If you need to make sure if your latest code works with sample project or your existing projects, run the following command to publish the latest build to the local Maven repository..

Spring Data JPA,基础学习笔记.

- - ITeye博客
最好先学习 JPA 方面的知识....在这里使用的是 Hibernate. 也已经使用了一段时间,看什么都不如看官方文档,我这里也只是写个笔记记录一下,如果能帮助到其他人,很开心 .算是个 demoshow 吧.这里也只写了一些我觉得比较有用的地方.其他一些使用知识,请参见官方文档:http://static.springsource.org/spring-data/data-jpa/docs/current/reference/html/.

JPA基本数据类型映射

- - 编程语言 - ITeye博客
                // initialValue = 0, allocationSize = 1)   Oracle中序列方式生成主键.                 //Oracle序列方式生成/主键.                 @GeneratedValue(strategy = GenerationType.IDENTITY)   //MySQL,SQLSErver自增长方式.

Spring + JPA实现数据库读写分离

- - 深入一点,你会更加快乐
    本文展示了如何在Spring环境中使用JPA实现dataSource的读写分离(本文没有使用JTA事务),这个东西看起来简单,其实实现起来比较蹩脚,与JDBC有很大区别.     1)使用Spring中的AbstractRoutingDataSource,辅助程序在运行时选择合适的dataSource.