一、单向一对多

特点:性能差,不怎么用,有集合默认懒加载

@OneToMany

1.private Set<T> t = new HashSet<>()

2.private List<T> t = new ArrayLiat<>()

其中1为无序不重复(性能好),2为有序课重复

注:单向一对多,多对一,双向多对一,一对多,表结构一模一样

二、双向多对一、一对多

保证维护关系的列是同一列

JoinColumn(name="xxx")

一方交给多方维护(外键在多方)

MappedBy=“xx”映射关系交给对应类中字段去维护

三、级联

分为PERSIST、UPDATE、REMOVE、ALL

一般能不用就不用,特别是删除

组合关系必须使用(cascade=Cascade.Type.All  orphanRemoval=ture)

在开发中:单据都是组合关系(其余特殊的看需求)

ophanRemoval:孤儿删除

remove(其中一个)

clean(全部)

四、多对多

尽量不要使用级联

joinTable(name=“xxx”,joincolumn=@JoinColumn(name=“aaa”)

inverseJoinColum=@JoinColumn(name=“bbb”))

五、一对一

共享主键(扩展性不强,不建议使用)

唯一外键(扩展性强,建议使用)

主表和从表:

外键在哪从表就在哪

JPA学习-03的更多相关文章

  1. JavaScript学习03 JS函数

    JavaScript学习03 JS函数 函数就是包裹在花括号中的代码块,前面使用了关键词function: function functionName() { 这里是要执行的代码 } 函数参数 函数的 ...

  2. Java虚拟机JVM学习03 连接过程:验证、准备、解析

    Java虚拟机JVM学习03 连接过程:验证.准备.解析 类被加载后,就进入连接阶段. 连接就是将已经读入到内存的类的二进制数据合并到虚拟机的运行时环境中去. 连接阶段三个步骤:验证.准备和解析. 类 ...

  3. JPA学习---第一节:JPA详解

    一.详解 JPA JPA(Java Persistence API)是Sun官方提出的Java持久化规范.它为Java开发人员提供了一种对象/关系映射工具来管理Java应用中的关系数据.他的出现主要是 ...

  4. Java学习03

    Java学习03 1.java面试一些问题 一.什么是变量 变量是指在程序执行期间可变的数据.类中的变量是用来表示累的属性的,在编程过程中,可以对变量的值进行修改.变量通常是可变的,即值是变化的 二. ...

  5. ThinkPhp学习03

    原文:ThinkPhp学习03 一.ThinkPHP 3 的输出      (重点) a.通过 echo 等PHP原生的输出方式在页面中输出 b.通过display方法输出   想分配变量可以使用as ...

  6. Spring学习---JPA学习笔记

    用了一段时间的Spring,到现在也只是处于会用的状态,对于深入一点的东西都不太了解.所以决定开始深入学习Spring. 本文主要记录JPA学习.在学习JPA之前,需要了解一些ORM的概念. ORM概 ...

  7. JVM学习03:性能监控工具

    JVM学习03:性能监控工具 写在前面:本系列分享主要参考资料是  周志明老师的<深入理解Java虚拟机>第二版. 性能监控工具知识要点Xmind梳理 案例分析 案例分析1-JPS 案例分 ...

  8. JPA学习笔记(8)——映射一对多关联关系

    一对多关联关系 本文有很多和多对一是一样的,因此不会写得非常具体. 有看不懂的.能够參考JPA学习笔记(7)--映射多对一关联关系 Order实体类 package com.jpa.helloworl ...

  9. node.js 学习03

    node.js学习03 解决浏览器接收服务端信息之后乱码的问题: 服务器通过设置http响应报文头,告诉浏览器使用相应的编码 来解析网页. res.setHeader('Content','text/ ...

随机推荐

  1. K8s简单yaml文件运行例子deployment

    kubectl run 创建并运行一个或多个容器镜像. 创建一个deployment 或job 来管理容器. kubectl run 语法: $ run NAME --image=image [--e ...

  2. LevelDB源码分析-Write

    Write LevelDB提供了write和put两个接口进行插入操作,但是put实际上是调用write实现的,所以我在这里只分析write函数: Status DBImpl::Write(const ...

  3. Android Studio添加aar依赖的两种方式

    1 android{ repositories { flatDir { dirs 'libs' } } } dependencies { implementation fileTree(include ...

  4. Earth Wind 一个查看全球风向的网站

    可以查看整个地球的全貌 ,还能定位你的位置,特别是动画挺有意思 网址:https://earth.nullschool.net/#current/wind/surface/level/orthogra ...

  5. maven工程 添加本地jar依赖

    和第三方平台对接的时候要用到对方提供的一个jar包,jar包怎么直接添加到pom文件的依赖中呢? jar包一般都是公共的,要上传到私服仓库.我们都是直接登录私服,操作仓库. 登录私服可以在项目的pom ...

  6. vim 自动添加作者、版权、修改时间等信息

    相信大家阅读代码时都见过这样的文件头: # THIS FILE IS PART OF LibreBoot PROJECT (归属) # reboot.py - The core part of the ...

  7. python-django(创建项目、应用、运行)

    1.创建项目.应用 方法一.命令行创建 <1>.创建项目命令 django-admin startproject  项目名称 <2>.创建应用命令 django-admin s ...

  8. python 代码求阶乘

    递归实现 1: #递归实现 def factorial(n): if n == 0: return 1 else: return n * factorial(n - 1)# 递归实现 递归实现 2: ...

  9. 教程:使用cPanel管理域名和数据库

    cPanel是一个基于web的基于web的控制面板,它简化了许多常见的系统管理任务,如网站创建.数据库部署和管理等.本指南向您展示了如何使用cPanel用户帐户管理域和数据库.所有这些指令都与位于端口 ...

  10. dotNet程序员的Java爬坑之旅(二)

    囉里囉唆的寫了一大堆,最後還是全刪除了.哎~ 言歸正傳,最近因爲發生了很多事情,所以更新的有嗲晚了,最近也一直在學習,但是感覺效率什麽的不是很高,這是不對的,反思一下,從這篇博文開始,打起精神吧. M ...