配置

image.png

image.png
操作
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;
import javax.persistence.Query;
import org.junit.Test;
import com.itheima.domain.Customer;
import com.itheima.domain.LinkMan;
import com.itheima.utils.JPAUtil;
/*
* JPA一对多相关操作
*
* */
public class JPADemo1 {
/*
* 保存
* 创建一个客户和一个联系人
* 建立客户和联系人的双向关联关系
* 先保存客户,再保存联系人
* */
@Test
public void test1() {
Customer c = new Customer();
LinkMan l = new LinkMan();
c.setCustName("JPA one-to-many Customer");
l.setLkmName("JPA one-to-many LinkMan");
c.getLinkmans().add(l);
l.setCustomer(c);
//获取EntityManager对象
EntityManager em = JPAUtil.createEntityManager();
//获取事务对象,并开启事务
EntityTransaction tx = em.getTransaction();
tx.begin();
//执行保存操作
em.persist(c);
em.persist(l);
//提交事务
tx.commit();
//关闭资源
em.close();
}
/*
* 更新
* 创建一个联系人
* 查询id为5的客户
* 为5这个客户分配该联系人
* 更新客户
* */
@Test
public void test2() {
LinkMan l = new LinkMan();
l.setLkmName("JPA one-to-many LinkMan");
//获取EntityManager对象
EntityManager em = JPAUtil.createEntityManager();
//获取事务对象,并开启事务
EntityTransaction tx = em.getTransaction();
tx.begin();
Customer c = em.find(Customer.class, 5L);
c.getLinkmans().add(l);
l.setCustomer(c);
//执行保存操作
em.persist(c);
em.persist(l);
//提交事务
tx.commit();
//关闭资源
em.close();
}
/*
*删除
* */
@Test
public void test3() {
//获取EntityManager对象
EntityManager em = JPAUtil.createEntityManager();
//获取事务对象,并开启事务
EntityTransaction tx = em.getTransaction();
tx.begin();
Customer c = em.find(Customer.class, 5L);
em.remove(c);
//提交事务
tx.commit();
//关闭资源
em.close();
}
}
查询
package com.itheima.test;
import java.util.Set;
import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;
import org.junit.Test;
import com.itheima.domain.Customer;
import com.itheima.domain.LinkMan;
import com.itheima.utils.JPAUtil;
/**
* JPA的查询操作
*
* 它可以使用对象导航的方式
* @author zhy
*
*/
public class JPADemo2 {
/**
* 根据客户查询客户下的联系人
*/
@Test
public void test1(){
EntityManager em = JPAUtil.createEntityManager();
EntityTransaction tx = em.getTransaction();
tx.begin();
//1.查询id为1的客户
Customer c = em.find(Customer.class, 1l);
System.out.println(c);
//查询当前客户下的联系人
Set<LinkMan> linkmans = c.getLinkmans();
System.out.println(linkmans);
tx.commit();
em.close();
}
/**
* 根据联系人,查询联系人的所属客户
*/
@Test
public void test2(){
EntityManager em = JPAUtil.createEntityManager();
EntityTransaction tx = em.getTransaction();
tx.begin();
//1.查询id为1的客户
LinkMan l = em.find(LinkMan.class, 1l);
System.out.println(l);
//查询当前客户下的联系人
Customer c = l.getCustomer();
System.out.println(c);
tx.commit();
em.close();
}
}