JPA实体关联关系映射之概述

一、简介

首先来说关联关系是面向对象分析,面向对象设计最重要的部分,JPA是完全可以通过映射来简化数据持久化到数据,和Hibernate一样,JPA的关联关系也分为两种,一种是单向关联,一种是双向关联:

单向关联:只需要单向访问关联端,比如说:我们只能通过某一学期访问这学期的课程,而不能通过课程访问课程所属的学期,这种关联关系就是单向关联。

双向关联:关联的两端可以互相访问。比说说班级可以访问学生,学生也可以访问班级,这种关联关系就是双向关联。

关联关系可以分为如下几种:

单向:1-1;1-N;N-1;N-N

双向:1-1;1-N;N-N;双向关联里没有N-1,因为双向关系中1-N和N-1是完全相同的。

二、关联属性

不管是单向关联还是双向关联都需要在N的一端实体中使用@ManyToOne的注解修饰记录关联关系的属性,使用ManyToOne注解常用到的属性有:

1、Cascade:指定关联实体采用怎样的级联策略,常用的属性有四种:

(1)CascadeType.ALL:将所有的持久化操作都级联到关联实体

(2)CascadeType.MERGE:将merge操作都级联到关联实体

(3)CascadeType.PERSIST:将persist操作都级联到关联实体

(4)CascadeType.REFRESH:将refresh操作都级联到关联实体

(5)CascadeType.REMOVE:将remove操作都级联到关联实体

2、fetch:指定抓取关联实体时的抓取策略,常用的属性有如下两种:

(1)FetchType.EAGER:抓取实体时,立即抓取关联实体

(2)FetchType.LAZY:抓取实体时,演示抓取关联实体,等到真正调用关联实体时再去抓取

3、TargetEntity:指定关联实体的类名,对于大多数的关联关系,JPA是可以通过反射来确定关联实体的类型的,因此这个属性不是必要的,但是也存在一些特殊情况,例如一对多,多对多,如果实体中不带泛型信息的Set集合来记录关联实体,那么必须指定targetEntity属性

三、映射数据库属性

映射实体的时候,存在N的一端,当将实体的属性持久化到数据库的时候,需要指定该属性在数据库中的各种属性,此时用到的注解就是@JoinColumn,其中常用的属性有:

1、name:指定该属性在外键列的列名

2、nullable:指定该列是否允许为空,默认是可以为空的

3、table:指定该列所在的数据表的表名,默认在多的一端实体所映射成的数据库表中

4、unique:指定该列是否为唯一约束。

刚刚接触了解的不多,关于JPA的关联映射和这次博客中写到的属性在下篇关于单双向关联映射的实例中在做详细的实例。

时间: 2024-11-10 07:31:00

JPA实体关联关系映射之概述的相关文章

JPA实体基本映射

1.前言 JPA可以使用XML映射文件来管理实体与数据表之间的映射关系,但在实际开发中,绝大部分情况都是采用Annotation来管理实体和数据表的映射关系.本篇着重来讲解一下JPA中采用注解形式来映射实体. 2.JPA属性注入 2.1.常用注解 @Entity:被该注解修饰的POJO就是一个实体 @Table:该注解反应的是所映射的一个表 @Column:该字段用来修饰多要描述的属性 [email protected] 在默认情况下,实体类的Field会自动映射到数据表的数据列,如果不想映射的

Hibernate 实体关联关系映射(转载)

原文链接地址:http://lavasoft.blog.51cto.com/62575/39398/ Hibernate:Hibernate关联关系映射实例速查 Hibernate关联关系映射目录│ ├─单向关联│  ├─  一对一外键单向关联│  ├─  一对一主键单向关联│  ├─  一对一连接表单向关联│  ├─  一对多外键单向关联│  ├─  一对多连接表单向关联│  ├─  多对一外键单向关联│  ├─  多对一连接表单向关联│  └─  多对多单向关联└─双向关联    ├─  一

Hibernate 实体关联关系映射【转】

Hibernate关联关系映射目录│ ├─单向关联│  ├─  一对一外键单向关联│  ├─  一对一主键单向关联│  ├─  一对一连接表单向关联│  ├─  一对多外键单向关联│  ├─  一对多连接表单向关联│  ├─  多对一外键单向关联│  ├─  多对一连接表单向关联│  └─  多对多单向关联└─双向关联    ├─  一对一外键双向关联    ├─  一对一主键双向关联    ├─  一对一连接表双向关联    ├─  一对多外键双向关联    ├─  一对多连接表双向关联   

JPA总结——实体关系映射(一对多@OneToMany)

JPA总结——实体关系映射(一对多@OneToMany) 并注明来源: http://blog.sina.com.cn/s/blog_49fd52cf0100scql.html 一对多模型(单向)说明:一个客户对应多个地址,通过客户可以获得该客户的多个地址的信息.客户和地址是一对多的关系,并且客户与地址是单向关联的关系. 映射策略# 外键关联:两个表的关系定义在一个表中:# 表关联:两个表的关系单独定义一个表中通过一个中间表来关联.映射策略——外键关联 表结构如下: 1 TABLE custom

JPA实体继承的映射

注:文章中据说的实体指的是被@Entity注解的类. JPA中对象关系映射通常情况下是一个实体对应一个表,两个实体之间没有任何关系.如果两个实体之间是继承关系,那么该如何映射呢? JPA中的实体支持继承映射,多态关联,多态查询.抽象类和具体的类都可以是实体,且都可以使用@Entity来注解,映射成实体,并查询封装成一个实体.实体类可以继承非实体类,非实体类也可以继承实体类. JPA的继承映射有如下几种情况: 一.实体类继承抽象(具体)实体类 抽象类可以指定成为一个实体,抽象实体和具体实体的唯一区

持久化API(JPA)系列(八)实体关系映射(ORM)之单表映射@EmbeddedId

接上文<持久化API(JPA)系列(七)实体关系映射(ORM)之单表映射@IdClass> 本文将介绍<联合主键:使用@EmbeddedId嵌入外部主键> 上文是通过@IdClass引用外部主键,联合主键也可以采用嵌入式主键替代. 1)新建外部主键类Family2.java 设置联合主键man和woman,因此外部主键也需要定义两个相同的变量,并添加一个以两个变量为输入的构造函数,同时添加getter/setter函数. 主键类必须满足: 1.必须实现Serializable接口,

持久化API(JPA)系列(六)实体关系映射(ORM)之映射类型

ORM实体关系映射,即将数据库中的数据表及表之间的关系,通过实体Bean及实体Bean之间的关系表现出来,实现通过操作实体Bean来操作数据库. ORM(Object-Relation-Map),其中Object表示实体Bean,Relation表示数据表,Map表示实体Bean与数据表的映射. 由于EJB3中的实体Bean采用JPA框架,因此这里的ORM就是指JPA映射.它的作用也类似于Hibernate.iBATIS.JDO.TopLink等持久化层框架中的实体关系映射. 根据表与表之间的关

JPA 实体映射

一.实体基本映射 1 /* 2 * @Entity:将领域对象标注为一个实体,表示保存到数据库中 3 * @@Table:保存到数据库中表名,默认表名为类名,可通过name属性命名 4 * 5 * */ 6 @Entity 7 @Table(name="t_user") 8 public class User { 9 10 11 @Id //主键 12 @GeneratedValue // JPA自动选择合适的生成策略 13 @Column(name="id_")

Hibernate(5)—— 联合主键 、一对一关联关系映射(xml和注解) 和 领域驱动设计

俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习!涉及的知识点总结如下: One to One 映射关系 一对一单向外键(XML/Annotation) 一对一双向外键关联(XML/Annotation) 联合主键 一对一单向外键联合主键(Xml/Annotation) 一对一组件关联(XML/Annotation) 理解组件 领域驱动设计——自动生成数据库脚本 一对一关系的小结 一些出错问题的总结 自动生成数据库脚本 一般在项目开发过程中,我们的习惯是先建好数据库和表,然后在进