zoukankan      html  css  js  c++  java
  • JPA的entityManager的find、getReference、persisit、remove方法的使用

    场景

    JPA入门简介与搭建HelloWorld(附代码下载):

    https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103473937

    在上面博客中搭建好JPA的HelloWorld后,再新建test包,包下新建Junit测试类

    然后将JPA所需的API对象等声明

    private EntityManagerFactory entityManagerFactory;
    private EntityManager entityManager;
    private EntityTransaction transaction;

    然后编写每个测试方法执行前与执行后的方法

    @BeforeEach
     public void init(){
      entityManagerFactory = Persistence.createEntityManagerFactory("HelloJPA");
      entityManager = entityManagerFactory.createEntityManager();
      transaction = entityManager.getTransaction();
      transaction.begin();
     }
     
     @AfterEach
     public void destroy(){
      transaction.commit();
      entityManager.close();
      entityManagerFactory.close();
     }

    注:

    博客主页:
    https://blog.csdn.net/badao_liumang_qizhi
    关注公众号
    霸道的程序猿
    获取编程相关电子书、教程推送与免费下载。

    实现

    测试find方法

    @Test
     public void testFind() {
      Customer customer = entityManager.find(Customer.class, 3);
      System.out.println("-------------------------------------");
      
      System.out.println(customer);
     }

    上面方法通过主键ID为3查询到实体对象

    类似于 hibernate 中 Session 的 get 方法。

    测试getReference方法

    @Test
     public void testGetReference(){
      Customer customer = entityManager.getReference(Customer.class, 3);
      System.out.println(customer.getClass().getName());  
      System.out.println("-------------------------------------");  
      System.out.println(customer);
     }

    同上也是查询到主键Id为3的实体对象。

    类似于 hibernate 中 Session 的 load 方法。

    测试persist方法

    @Test
      public void testPersistence(){
       Customer customer = new Customer();
       customer.setAge(15);
       customer.setEmail("BADAO@163.com");
       customer.setLastName("LIUMANG");
       entityManager.persist(customer);
       
      }

    上面方法将构建的对象存入数据库。

    类似于 hibernate 的 save 方法. 使对象由临时状态变为持久化状态。

    和 hibernate 的 save 方法的不同之处: 若对象有 id, 则不能执行 insert 操作, 而会抛出异常.。

    测试remove方法

    @Test
      public void testRemove(){
       
       Customer customer = entityManager.find(Customer.class, 4);
       entityManager.remove(customer);
      }

    类似于 hibernate 中 Session 的 delete 方法. 把对象对应的记录从数据库中移除。

    但注意: 该方法只能移除 持久化 对象. 而 hibernate 的 delete 方法实际上还可以移除 游离对象。

  • 相关阅读:
    vscode debugger 调试服务
    巴克斯诺尔范式 && 乔姆斯基谱系,词法 && 语法
    推荐好用的建站系统以及各网站系统优缺点介绍
    解决emlog默认导航不能修改的问题以及修改后台登录地址的方法
    易企CMS主要模板文件介绍
    易企CMS模板调用标签列表
    易企CMS仿站标签说明
    使用Custom scrollbar(彩色滚动条)插件实现WordPress滚动条变色的方法
    2018给网页滚动条变色的新方法
    javascript实现双击网页自动滚动,单击滚动停止
  • 原文地址:https://www.cnblogs.com/badaoliumangqizhi/p/12017384.html
Copyright © 2011-2022 走看看