4.3 JPA一对多

配置

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容