一、主键生成策略

主键:确定一张表的唯一性东西(非空且唯一)

分为:自然主键和代理主键、

生成策略:

identity:自增策略(1.值必须是数字,2.数据库支持)

sequence:序列策略(同上,性能高,可以缓存)

auto:默认策略(通过方言自动配置)

table:表策略(性能较低,但是能模拟序列,兼容所有数据库)

二、JPA的对象状态

临时状态(transient):瞬时状态,和entityManager没有关系

持久状态:托管状态,一级缓存中的对象,和entityManager发生关系

删除状态:执行remove方法就是,和entityManager准备解除关系

游离状态:脱管状态,和entityManager解除关系

三、脏数据更新

结论:持久化对象一旦修改,提交事务时数据库修改

四、规则

1.domain实体类不能定义final

2.不能使用基本数据类型

3.必须提供默认的无参构造方法

五、域对象(domain)之间的关系

1.依赖:例如Controller依赖于service依赖于dao

2.关联关系:

  多重性:可分为一对一、一对多,多对一、多对多

  导航型:可分为单向关联和双向关联

  (表有多重性,没有导航性)

六、设计表注意事项

多对一:有外键的就是多方

多对多:有中间表的就是多对多

一对一:共享主键,唯一外键

聚合关系:双向的多对一、一对多

组合关系:强聚合、分不开

注:开发中一般先一后多,有效提高性能

fetch:数据抓取策略

FetchType.EAGER:及时加载

FetchType.LAZY:延时加载,懒加载

懒加载异常:no session(和数据库会话关闭)

七、二级缓存

同一个EntityManagerFactory 不同EntityManager 同一个OID

使用场景:

1.读取大于修改

2.对数据要有独享控制权,数据不被第三方修改

3.可以容忍无效数据、非关键数据(非财务数据)

4.数据量不能超过内存容量

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

  1. JavaScript学习02 基础语法

    JavaScript学习02 基础语法 JavaScript中很多基础内容和Java中大体上基本一样,所以不需要再单独重复讲了,包括: 各种算术运算符.比较运算符.逻辑运算符: if else语句.s ...

  2. Java虚拟机JVM学习02 类的加载概述

    Java虚拟机JVM学习02 类的加载概述 类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对 ...

  3. Python学习02 列表 List

    Python学习02 列表 List Python列表 List Python中的列表(List)用逗号分隔,方括号包围(comma-separated values (items) between ...

  4. Android Testing学习02 HelloTesting 项目建立与执行

    Android Testing学习02 HelloTesting 项目建立与执行 Android测试,分为待测试的项目和测试项目,这两个项目会生成两个独立的apk,但是内部,它们会共享同一个进程. 下 ...

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

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

  6. Java学习02

    Java学习02 1.导入内部的包 一.在包的下面加入下面一句话: import    java.util.Scanner; 二.在类中 Scanner input=new     Sanner(Sy ...

  7. ThinkPhp学习02

    原文:ThinkPhp学习02 一.什么是MVC                M -Model 编写model类 对数据进行操作 V -View  编写html文件,页面呈现 C -Controll ...

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

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

  9. JVM学习02:GC垃圾回收和内存分配

    JVM学习02:GC垃圾回收和内存分配 写在前面:本系列分享主要参考资料是  周志明老师的<深入理解Java虚拟机>第二版. GC垃圾回收和内存分配知识要点Xmind梳理 案例分析1-(G ...

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

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

随机推荐

  1. 重建整个数据库的索引(Server2000)

    declare @dbname varchar(50)select @dbname ='WebFZ' create table #tableT(tn sysname)insert into #tabl ...

  2. Prometheus

    官方网址:https://prometheus.io/ GitHub网址:https://github.com/prometheus/prometheus 软件下载地址:https://prometh ...

  3. celery(一) application

    Application application celery在使用之前,必须首先实例化.e.g. app = Celery() app 是线程安全的,即:不同配置.组件和任务的多个app可以共存在同一 ...

  4. layui表格点击排序按钮后,表格绑定事件失效解决方法

    最近项目使用layui较为频繁,遇到了一个麻烦的问题,网上搜索也没有看到同类型的问题,故此记下来. 需求是点击上图右侧表格中某一个单元格,会触发点击事件如下代码: $("table>t ...

  5. chrome浏览器和其它浏览器对scrollTop、scrollLeft的获取方法

    chrome浏览器不能通过document.documentElement.scrollTop来获得距上滚动距离,得到的值始终为0:需要用document.body.scrollTop来获取.其它浏览 ...

  6. setCapture 使用方法

    setCapture 可以捕获到 移动到浏览器外的鼠标事件. 例如拖动过程中,即使鼠标移动到了浏览器外,拖动程序依然可以执行! 作用就是把 把鼠标事件 捕获到 当前文档指定的对象! setCaptur ...

  7. 并发系列2:Java并发的基石,volatile关键字、synchronized关键字、乐观锁CAS操作

    由并发大师Doug Lea操刀的并发包Concurrent是并发编程的重要包,而并发包的基石又是volatile关键字.synchronized关键字.乐观锁CAS操作这些基础.因此了解他们的原理对我 ...

  8. 基于WebGL架构的3D可视化平台ThingJS-搭建设备管理系统

    国内高层建筑不断兴建,它的特点是高度高.层数多.体量大.面积可达几万平方米到几十万平方米.这些建筑都是一个个庞然大物,高高的耸立在地面上,这是它的外观,而随之带来的内部的建筑设备也是大量的.为了提高设 ...

  9. Python学习—基础篇之基本数据类型(二)

    Python中重要的数据结构 1.列表 2.元组 3.字典 4.集合 列表 1.创建列表 # 方式一 name = [] print(type(name)) # 执行结果 >>> & ...

  10. java实现将包含多个<REC>的文件拆成若干只包含一个<REC>的文件

    遍历文件夹里的文件,将包含多个<REC>的文件拆成若干只包含一个<REC>的文件 package com.prepub; import java.io.BufferedRead ...