JPA EntiityManager.find方法
Posted wumingoo1
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JPA EntiityManager.find方法相关的知识,希望对你有一定的参考价值。
find 方法
- 立即加载:在调用find方法的时候,就会查找缓存,找不到立即发送sql语句查询数据库。
- 找到返回实体类对象,可以用于remove,setter,remove之后还可以调用persist保存。
- 找不到返回null。
find 方法测试
find 之后 setter 实现更新
@Test
public void test1() {
EntityManagerFactory factory = Persistence.createEntityManagerFactory("myJpa");
EntityManager em = factory.createEntityManager();
EntityTransaction tx = em.getTransaction();
tx.begin();
Student s = em.find(Student.class, 1L);
/*
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=?
*/
s.setSage(999); // ORM思想:操作Managed状态的实体类对象就相当于操作表中的记录
tx.commit();
/*
Hibernate:
update
Student
set
sage=?,
sname=?
where
sid=?
*/
em.close();
factory.close();
}
find 之后 remove 实现删除
@Test
public void test2() {
EntityManagerFactory factory = Persistence.createEntityManagerFactory("myJpa");
EntityManager em = factory.createEntityManager();
EntityTransaction tx = em.getTransaction();
tx.begin();
Student s = em.find(Student.class, 1L);
/*
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=?
*/
em.remove(s); // ORM思想:操作Managed状态的实体类对象就相当于操作表中的记录
tx.commit();
/*
Hibernate:
delete
from
Student
where
sid=?
*/
em.close();
factory.close();
}
find 之后 remove 再 persist 相当于删除后又保存
@Test
public void test() {
EntityManagerFactory factory = Persistence.createEntityManagerFactory("myJpa");
EntityManager em = factory.createEntityManager();
EntityTransaction tx = em.getTransaction();
tx.begin();
Student s = em.find(Student.class, 1L);
/*
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=?
*/
em.remove(s);
em.persist(s);
tx.commit();
em.close();
factory.close();
}
find 找不到返回 null
@Test
public void test2() {
EntityManagerFactory factory = Persistence.createEntityManagerFactory("myJpa");
EntityManager em = factory.createEntityManager();
EntityTransaction tx = em.getTransaction();
tx.begin();
Student s = em.find(Student.class, 1027500L); // 找不到返回 null
/*
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=?
*/
System.out.println(s); // null
tx.commit();
em.close();
factory.close();
}
以上是关于JPA EntiityManager.find方法的主要内容,如果未能解决你的问题,请参考以下文章