JPA的主键生成策略以及二级缓存

1. JPA的主键生成策略

1.1 什么是主键
唯一标识 每一行的数据 比如 id =1

主键特点:非空且唯一

主键分类:

​ 代理主键 :没有实际意义的一些列作为主键 比如id 现在就用的代理主键

​ 自然主键 :具体实际意义的列作为的主键 比如 身份证号
1.2 JPA主键生成策略
配置

@Id
@GeneratedValue
private Long id;

GeneratedValue:默认使用 等效于(strategy = GenerationType.AUTO)

​ 自己会根据你的配置的方言 来选择使用的生成策略 – 主键自增mysql --序列(oracle)

​ --常用方式

@GeneratedValue(strategy = GenerationType.IDENTITY) -- 就是主键自增策略
@GeneratedValue(strategy = GenerationType.SEQUENCE) --序列 mysql不支持 但是oracle支持(不用)
@GeneratedValue(strategy = GenerationType.TABLE) --表的策略 兼容好 可以mysql 支持oracle 性能有点低
@GeneratedValue(strategy = GenerationType.AUTO) -- 默认根据方言来选择 


​ hibernate底层还很多生成策略

搜索内容:两次shift

JPA提供四种生成策略,我们常用是auto

注意事项:如果使用@GeneratedValue ,在保存数据 就不要设置id的值,应该id这个主键值已经交给jpa进行维护

2 JPA的实体状态

JPA有哪些状态?

刚才使用JPA的实体,它其实是有状态的

(1)瞬时状态

​ 刚刚new 创建出来,没有和entityManager发生关系

(2)托管状态(持久状态)

​ 已经和entityManager发生关系

(3)脱管状态(游离状态)

​ 已经和entityManager脱离关系

(4)删除状态

​ 如果我们要删除一个内容 remove 这个对象的状态就是删除状态
2.1脏数据更新 --允许存在
一个持久化状态的数据,如果修改非主键的值,在comm

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值