JPA EntiityManager.getReference方法

getReference 方法

  • 延迟加载:什么时候用什么时候查询
  • 找到返回 代理对象
  • 找不到 抛出 javax.persistence.EntityNotFoundException

getReference 方法测试

@Test
public void test() {
    EntityManagerFactory factory = Persistence.createEntityManagerFactory("myJpa");
    EntityManager em = factory.createEntityManager();
    EntityTransaction tx = em.getTransaction();
    tx.begin();

    Student s1 = em.getReference(Student.class, 1L);
    System.out.println("---");
    System.out.println(s1);
    /*

    ---
    Hibernate:
        select
            student0_.sid as sid1_0_0_,
            student0_.sage as sage2_0_0_,
            student0_.sname as sname3_0_0_
        from
            Student student0_
        where
            student0_.sid=?
    Student{sid=1, sname='刘备', sage=100}

     */


    Student s2 = em.getReference(Student.class, 9999L);
    System.out.println("---");

    try {
        System.out.println(s2);
    } catch (EntityNotFoundException e) {
        System.out.println("没查到");
    }
    /*

    ---
    Hibernate:
        select
            student0_.sid as sid1_0_0_,
            student0_.sage as sage2_0_0_,
            student0_.sname as sname3_0_0_
        from
            Student student0_
        where
            student0_.sid=?
    没查到

     */

    tx.commit();
    em.close();
    factory.close();
}
posted @ 2020-08-01 17:56  学习java进行时  阅读(143)  评论(0编辑  收藏  举报