JPA-学习02
一、主键生成策略
主键:确定一张表的唯一性东西(非空且唯一)
分为:自然主键和代理主键、
生成策略:
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的更多相关文章
- JavaScript学习02 基础语法
JavaScript学习02 基础语法 JavaScript中很多基础内容和Java中大体上基本一样,所以不需要再单独重复讲了,包括: 各种算术运算符.比较运算符.逻辑运算符: if else语句.s ...
- Java虚拟机JVM学习02 类的加载概述
Java虚拟机JVM学习02 类的加载概述 类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对 ...
- Python学习02 列表 List
Python学习02 列表 List Python列表 List Python中的列表(List)用逗号分隔,方括号包围(comma-separated values (items) between ...
- Android Testing学习02 HelloTesting 项目建立与执行
Android Testing学习02 HelloTesting 项目建立与执行 Android测试,分为待测试的项目和测试项目,这两个项目会生成两个独立的apk,但是内部,它们会共享同一个进程. 下 ...
- JPA学习---第一节:JPA详解
一.详解 JPA JPA(Java Persistence API)是Sun官方提出的Java持久化规范.它为Java开发人员提供了一种对象/关系映射工具来管理Java应用中的关系数据.他的出现主要是 ...
- Java学习02
Java学习02 1.导入内部的包 一.在包的下面加入下面一句话: import java.util.Scanner; 二.在类中 Scanner input=new Sanner(Sy ...
- ThinkPhp学习02
原文:ThinkPhp学习02 一.什么是MVC M -Model 编写model类 对数据进行操作 V -View 编写html文件,页面呈现 C -Controll ...
- Spring学习---JPA学习笔记
用了一段时间的Spring,到现在也只是处于会用的状态,对于深入一点的东西都不太了解.所以决定开始深入学习Spring. 本文主要记录JPA学习.在学习JPA之前,需要了解一些ORM的概念. ORM概 ...
- JVM学习02:GC垃圾回收和内存分配
JVM学习02:GC垃圾回收和内存分配 写在前面:本系列分享主要参考资料是 周志明老师的<深入理解Java虚拟机>第二版. GC垃圾回收和内存分配知识要点Xmind梳理 案例分析1-(G ...
- JPA学习笔记(8)——映射一对多关联关系
一对多关联关系 本文有很多和多对一是一样的,因此不会写得非常具体. 有看不懂的.能够參考JPA学习笔记(7)--映射多对一关联关系 Order实体类 package com.jpa.helloworl ...
随机推荐
- HASHSET不能预留容量问题
如果,它没有像 var lst = new List<int>(32) 这样可以直接预留容量的操作,原因未知. 但可以通过如下操作进行预留: //给hashset预留容量,防止动态扩容,由 ...
- java学习--修饰符
Java语言提供了很多修饰符,主要分为以下两类: 访问修饰符 非访问修饰符 访问控制修饰符 访问控制修饰符用来修饰类和类内部的成员变量和成员方法,来确定其访问权限 类的访问控制修饰符只有两种 defa ...
- ReactiveX 学习笔记(25)使用 RxJS + Vue.js 调用 REST API
JSON : Placeholder JSON : Placeholder (https://jsonplaceholder.typicode.com/) 是一个用于测试的 REST API 网站. ...
- tensorflow 升级到1.9-rc0,生成静态图frozen graph.pb本地测试正常, 在其他版本(eg1.4版本)或者android下运行出错NodeDef mentions attr 'dilations' not in Op<name=Conv2D; signature=input:T, filter:T -> output:T; attr=T:type,allowed=[DT_
这时节点定义找不到NodeDef attr 'dilations' not in,说明执行版本的NodeDef不在节点定义上,两个不一致,分别是执行inference的代码和生成静态图节点不一致(当然 ...
- Java属性中指定Json的属性名称
只需要使用注解"@JsonProperty(value = "pwd")" import com.fasterxml.jackson.annotation.Js ...
- C++读取与保持图片
#include<iostream> using namespace std; void main(void) { //保存输入图像文件名和输出图像文件名 ]; ]; //图像数据长度 i ...
- docker挂载目录的深入研究
转载一篇很好的文章: https://www.cnblogs.com/ivictor/p/4834864.html
- gridview 列头自动适应宽度
Gridview gv=Gridcontrol.MainView as Gridview; gv.BestFitColumns();
- CSS标签的加载
CSS加载不会阻塞DOM树解析 CSS加载会阻塞DOM树的渲染 CSS加载会阻塞后面JS语句的执行
- python脚本处理下载的b站学习视频
作为常年在b站学习的我,一直以来看到有兴趣的视频,从来都是点赞收藏下载三连,但是苦于我那小钢炮iphone se屏幕大小有限,看起视频实在费劲,决定一定要找个下载电脑上下载b站视频的方法,以前用过硕鼠 ...