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.数据量不能超过内存容量

原文地址:https://www.cnblogs.com/smiledragon/p/10487029.html