SpringDataJPA(4)查询删除更新操作

本篇文件是SpringDataJPA(2)的延续,需要将该博客(SpringDataJPA(2))内容看懂才可以

1.通过id查询

使用find方法查询

1.查询的对象就是当前客户对象本身
2.在调用find方法的时候,就会发送sql语句查询数据南

使用getReference查询

1.获取的对象是一个动态代理对象

2.调用getReference方法不会立即发送sql语句查询数据库:延迟加载(懒加载)

  1. 当调用查询结果对象的时候,才会发送查询的sql语句,什么时候用,什么时候发送sql语句查询数据库

我们习惯性将通过find方法进行查询叫做立即加载,通过reference加载叫做延迟加载(懒加载),
我们一般使用的是延迟加载的方式进行加载,因为是为了避免写了一段代码就要去查询数据库,但是最后并没有用,提高效率

延迟加载(懒加载):

  1. 得到的是-一个动态代理对象
  2. 什么时候用,什么使用才会查询

1.1通过find方法查询

/**
     * 根据id查询客户
     */
    @Test
    public void testFind(){
        //1.通过工具类获取entityManager
        EntityManager entityManager = JpaUtils.getEntityManager();
        //2.开启事务
        EntityTransaction tx = entityManager.getTransaction();
        tx.begin();
        //3.增删改查:根据id查询客户
        /*
        find:根据id查询数据
            class:查询数据的结果需要包装的实体类类型的字节码
            id:查询的主键的取值
         */
        Customer customer = entityManager.find(Customer.class, 1l);//在该处会查询数据库,即将数据库对应id的内容进行了获取
        System.out.println(customer);
        //4.提交事务
        tx.commit();
        //5.释放资源
        entityManager.close();
    }

运行结果

在这里插入图片描述

1.2通过getReference查询

@Test
    public void testReference(){
        //1.通过工具类获取entityManager
        EntityManager entityManager = JpaUtils.getEntityManager();
        //2.开启事务
        EntityTransaction tx = entityManager.getTransaction();
        tx.begin();
        //3.增删改查:根据id查询客户
        /*
        find:根据id查询数据
            class:查询数据的结果需要包装的实体类类型的字节码
            id:查询的主键的取值
         */
        Customer customer = entityManager.getReference(Customer.class, 1l);//在这个地方并不会去查询数据库,获取到的是乱码数据
        System.out.println(customer);//在该处才会去查询数据库,获取到完整的数据
        //4.提交事务
        tx.commit();
        //5.释放资源
        entityManager.close();
    }

2.删除

 @Test
    public void testRemove(){
        //1.通过工具类获取entityManager
        EntityManager entityManager = JpaUtils.getEntityManager();
        //2.开启事务
        EntityTransaction tx = entityManager.getTransaction();
        tx.begin();
        //3.增删改查:删除客户
        //(1)根据id查询客户
        Customer customer = entityManager.find(Customer.class, 1l);
        //(2)调用remove方法完成删除操作
        entityManager.remove(customer);
        //4.提交事务
        tx.commit();
        //5.释放资源
        entityManager.close();
    }

运行结果

在这里插入图片描述
在这里插入图片描述

3.更新

 @Test
    public void testUpdate(){
        //1.通过工具类获取entityManager
        EntityManager entityManager = JpaUtils.getEntityManager();
        //2.开启事务
        EntityTransaction tx = entityManager.getTransaction();
        tx.begin();
        //3.增删改查:更新客户
        //(1)根据id查询客户
        Customer customer = entityManager.find(Customer.class, 2l);
        //(2)更新客户
        customer.setCustIndustry("工厂");
        entityManager.merge(customer);
        //4.提交事务
        tx.commit();
        //5.释放资源
        entityManager.close();
    }

运行结果:

在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

?abc!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值