JPA框架深入了解

本文详细介绍了JPA框架的主键生成策略,包括auto、table、sequence和identity策略,并探讨了JPA实体的状态管理,如transient、managed、detached和removed状态。同时,讲解了n-to-n问题、实体定义规则以及单向多对一的关系配置。文章还重点讨论了JPA的抓取策略和二级缓存的配置与作用,分析了何时适合使用二级缓存及其命中条件。
摘要由CSDN通过智能技术生成

1.JPA主键生成策略(掌握)

主键:唯一地标识表中的某一条记录

主键特点:非空且唯一

主键分类: 自然主键 :具有实际意义的列来作为主键

​ 代理主键 :没有实际意义的列来作为主键 --单体项目

什么主键的生成策略

​ jpa采取的方案方式去生成主键

jpa:

(1)auto策略 – 默认使用这种:根据数据库方言来选择的到底使用哪种策略

​ 比如 配置mysql的方言 --策略 自增策略 (都喜欢mysql)

​ 配置oracle的方言 – 策略 序列sequence策略 --很多不用 收费 有钱的公司(金融 保险 政府)

​ create sequece s_employee;

​ insert into table(id,name,…) values(s_employee.nextVal())

(2)table策略: 表的生成策略 额外创建一张表来维护主键

SEQUENCE_COUNT SEQUENCE_NAME
2 t_employee

(3) sequence策略: 序列策略

(4) identity策略:mysql采用这种 自增策略

主键已经交给jpa来维护,我们就不需要设置了

2.JPA的状态(掌握)

2.1 什么叫JPA的状态

一个实体交给jpa维护的时候,这个实体在不同的时期,状态不一样

(a)临时(瞬时)transient New:刚刚创建出来。没有和jpa进行发生关系

(b)==持久(托管)==Managed:这个实体对象已经和jpa发生关系

(c)游离(脱管)Detached:脱离entityManager的管理,已经被持久化,不存在的entityManager里面

(d)删除Remove:即将要删除的时候,remove

2.2 脏数据更新 (掌握)

​ 一个持久化状态数据,修改非主键的值,会在commit提交的时候,自动会发送update sql语句去更新

@Test
    public void testDirtyData() throws Exception{
   
        //获取entityManager实体管理器
        EntityManager entityManager = JPAUtils.getEntityManager();
        //获取事务,开启事务transaction
        EntityTransaction transaction = entityManager.getTransaction();
        transaction.begin();
        //查询一条记录
        StatusJPA statusJPA = entityManager.find(StatusJPA.class, 1L);
        //设置数据的name
        statusJPA.setName("雾都");
        //提交事务
     
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值