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();
}