04讲、使用JPA加载_更新_删除对象
package junit.test;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import org.junit.BeforeClass;
import org.junit.Test;
import cn.itcast.bean.Person;
public class PersonTest {
@BeforeClass
public static void setUpBeforeClass() throws Exception {
}
//保存
@Test public void save(){
EntityManagerFactory factory = Persistence.createEntityManagerFactory("itcast");
//sessionFactory-->session-->begin事务
EntityManager em = factory.createEntityManager();
em.getTransaction().begin();//开始事务
em.persist(new Person("传智播客11"));
em.getTransaction().commit();
em.close();
factory.close();
}
//查询1
@Test public void getPerson(){
EntityManagerFactory factory = Persistence.createEntityManagerFactory("itcast");
EntityManager em = factory.createEntityManager();
Person person = em.find(Person.class, 27l);//相当于get
System.out.println(person.getName());
em.close();
factory.close();
}
//查询2
@Test public void getPerson2(){
EntityManagerFactory factory = Persistence.createEntityManagerFactory("itcast");
EntityManager em = factory.createEntityManager();
Long a1 = 27l;
Person person = em.getReference(Person.class, a1);//相当于load
System.out.println(person.getName());//只要我们第一次获取数据时才会初始化数据
em.close();
factory.close();
}
//new
//managed 托管
//游离(脱管)
//删除
//更新1 只能更新处于托管状态的数据
@Test public void updatePerson(){
EntityManagerFactory factory = Persistence.createEntityManagerFactory("itcast");
EntityManager em = factory.createEntityManager();
em.getTransaction().begin();
Person person = em.find(Person.class, 27l);
person.setName("老张");
em.getTransaction().commit();
em.close();
factory.close();
}
//更新2
@Test public void updatePerson2(){
EntityManagerFactory factory = Persistence.createEntityManagerFactory("itcast");
EntityManager em = factory.createEntityManager();
em.getTransaction().begin();
Person person = em.find(Person.class, 27l);
em.clear();//把实体管理中的所有实体变成游离状态(处于游离状态的数据更新时不能同步回数据库)
person.setName("老黎");
em.merge(person);//把游离状态的数据同步回数据库。
em.getTransaction().commit();
em.close();
factory.close();
}
//删除
@Test public void delete(){
EntityManagerFactory factory = Persistence.createEntityManagerFactory("itcast");
EntityManager em = factory.createEntityManager();
em.getTransaction().begin();
Person person = em.find(Person.class, 27l);
em.remove(person);
em.getTransaction().commit();
em.close();
factory.close();
}
}