`
zhangfeilo
  • 浏览: 390692 次
  • 性别: Icon_minigender_1
  • 来自: 昆明
社区版块
存档分类
最新评论

JPA 实现继承关系

阅读更多

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

       有一个实体Person,他是一个抽象实体,他有两个子实体:ManWoman

 

       先写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 = "";

 

 

。。。

}

InheritanceType.JOINED生成多张表:

 DiscriminatorColumn、 DiscriminatorValue不要设置,

 数据库中有3张表:base(id,createTime)、users(id,remark)、role(id,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 (?, ?)

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

 

 

InheritanceType.SINGLE_TABLE生存同一张表:

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

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

 

 

 

 

 

InheritanceType .TABLE_PER_CLASS生成多张表:

 

 

 DiscriminatorColumn、 DiscriminatorValue不要设置,

 

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

 

关于主键自增+加以下标识

@GeneratedValue(strategy = GenerationType.TABLE, generator = "customer_gen")
 @TableGenerator(
   name = "customer_gen",
   table = "tb_generator_auto",
   pkColumnName = "gen_name",
   valueColumnName = "gen_value",
   pkColumnValue = "CUSTOMER_PK",
   allocationSize = 1
   )

  • src.rar (5.1 KB)
  • 下载次数: 13
0
0
分享到:
评论

相关推荐

    经典JAVA.EE企业应用实战.基于WEBLOGIC_JBOSS的JSF_EJB3_JPA整合开发.pdf

    10.6 继承关系映射 426 10.6.1 整个类层次对应一张表的 映射策略 427 10.6.2 连接子类的映射策略 430 10.6.3 每个具体类对应一张表的 映射策略 434 10.7 使用抽象实体和非实体父类 436 10.7.1 抽象实体 436 10.7.2 ...

    CursoJPA:JPA课程

    JPA的早期版本被迫继承JPA提供的类,但是由于这种依赖性,这种方法使测试变得更加困难,JPA的较新版本不需要从某些Framework类中继承实体。 对象关系元数据:应用程序开发人员必须提供Java类及其属性到数据库表和...

    Java期末项目 用户管理系统(项目源代码+实验报告+SQL文件)

    创建一个用户数据访问层接口,继承`JpaRepository`或其他适合的Spring Data接口。该接口将提供一些基本的CRUD操作,例如保存用户、按ID查询用户等。 通过以上步骤,你就可以在Spring Boot中实现一个简单的用户管理...

    Hibernate实战(第2版 中文高清版)

     第1章 理解对象/关系持久化   1.1 什么是持久化   1.1.1 关系数据库   1.1.2 理解SQL   1.1.3 在Java中使用SQL   1.1.4 面向对象应用程序中的持久化   1.2 范式不匹配   1.2.1 粒度问题   1.2.2 ...

    抽奖系统设计方案.pdf

    减少系统中各部分的依赖关系,从⽽实现"⾼内聚,松耦合"的类型设计⽅案。 4.2 重构关键技法 重构关键技法 静态 -> 动态 早绑定 -> 晚绑定 继承 -> 组合 编译时依赖 -> 运⾏时依赖 紧耦合 -> 松耦合 4.3 本项⽬...

    jsp-data-grid:这个 JSP 标签库提供了一种使用 Java 和 JSP 创建数据网格的简单方法

    重要提示:我们目前正在开发一个新版本,它与 JSP 类似但允许... 这是库的继承部分。 行的过滤器是基于 java 反射生成的。 它们会自动适应实际的列类型。 关系会自动加载。 网格的所有参数都在 URL 中处理。 可以

    Spring面试题

    3.Hibernate中怎样实现类之间的关系?(如:一对多、多对多的关系) 类与类之间的关系主要体现在表与表之间的关系进行操作,它们都市对对象进行操作,我们程序中把所有的表与类都映射在一起,它们通过配置文件中的...

    Struts2 in action中文版

    第一部分 Strut 2:一个全新的框架 第1章 Struts 2:现代Web框架 2 1.1 Web应用程序:快速学习 2 ...15.6.2 配置相互关系 326 15.6.3 使用声明性架构 329 15.6.4 使用Tiles控制器准备网页内容 331 15.7 小结 332

    Java SE实践教程 源代码 下载

    9.2.1 我的联系手册(JPA实现) 228 9.2.2 我的联系手册(JAXB实现) 238 9.3 小结 242 第10章 准备环球旅行——应用程序国际化 243 10.1 讲解 244 10.1.1 概念介绍 244 10.1.2 设置Locale 249 10.1.3 隔离...

    Java测试新技术TestNG和高级概念.part1

    展示了高级技术:测试部分失败、工厂、依赖关系测试、远程调用、基于集群的测试服务器群等。 介绍了在Eclipse和IDE中安装TestNG插件。 包含了大量的代码示例。 无论您使用TestNG,JUnit或其他测试框架,本书提供的...

    Java测试新技术TestNG和高级概念.part2

    展示了高级技术:测试部分失败、工厂、依赖关系测试、远程调用、基于集群的测试服务器群等。 介绍了在Eclipse和IDE中安装TestNG插件。 包含了大量的代码示例。 无论您使用TestNG,JUnit或其他测试框架,本书提供的...

    Java SE实践教程 pdf格式电子书 下载(一) 更新

    9.2.1 我的联系手册(JPA实现) 228 9.2.2 我的联系手册(JAXB实现) 238 9.3 小结 242 第10章 准备环球旅行——应用程序国际化 243 10.1 讲解 244 10.1.1 概念介绍 244 10.1.2 设置Locale 249 10.1.3 隔离...

    Java SE实践教程 pdf格式电子书 下载(四) 更新

    9.2.1 我的联系手册(JPA实现) 228 9.2.2 我的联系手册(JAXB实现) 238 9.3 小结 242 第10章 准备环球旅行——应用程序国际化 243 10.1 讲解 244 10.1.1 概念介绍 244 10.1.2 设置Locale 249 10.1.3 隔离...

    Java EE常用框架.xmind

    自定义也很简单:继承AuthorizingRealm类就好了 自定义的realm支持散列算法 授权方式 编程式:通过写if/else 授权代码块完成 注解式:通过在执行的Java方法上放置相应的注解完成 Spring与Shiro...

    Hibernate注释大全收藏

    映射继承关系 EJB支持3种类型的继承。 • Table per Class Strategy: the <union-class> element in Hibernate 每个类一张表 • Single Table per Class Hierarchy Strategy: the <subclass> element in Hibernate...

    JAVA核心知识点整理(有效)

    1. 目录 1. 2. 目录 .........................................................................................................................................................1 JVM ........................

Global site tag (gtag.js) - Google Analytics