1. JPA的主键生成策略
1.1 什么是主键
唯一标识 每一行的数据 比如 id =1
主键特点:非空且唯一
主键分类:
代理主键 :没有实际意义的一些列作为主键 比如id 现在就用的代理主键
自然主键 :具体实际意义的列作为的主键 比如 身份证号
1.2 JPA主键生成策略(了解)
配置
@Id
@GeneratedValue
private Long id;
GeneratedValue:默认使用 等效于(strategy = GenerationType.AUTO)
常用方式
@GeneratedValue(strategy = GenerationType.IDENTITY) – 就是主键自增策略
@GeneratedValue(strategy = GenerationType.SEQUENCE) --序列 mysql不支持 但是oracle支持(不用)
@GeneratedValue(strategy = GenerationType.TABLE) --表的策略 兼容好 可以mysql 支持oracle 性能有点低
@GeneratedValue(strategy = GenerationType.AUTO) – 默认根据方言来选择
JPA提供四种生成策略,我们常用是auto
2 JPA的实体状态(理解)
JPA有哪些状态?
刚才使用JPA的实体,它其实是有状态的
(1)瞬时状态
刚刚new 创建出来,没有和entityManager发生关系
(2)托管状态(持久状态)
已经和entityManager发生关系
(3)脱管状态(游离状态)
已经和entityManager脱离关系
(4)删除状态
如果我们要删除一个内容 remove 这个对象的状态就是删除状态
2.1脏数据更新 --允许存在 面试题
一个持久化状态的数据,如果修改非主键的值,在commit的时候,会自动发送update语句更新
实体之间关系
(1)依赖关系
(2)关联关系(jpa难点)
(3)组合关系
(4)聚合关系
泛化关系