hibernate 级联操作
发布日期:2022-02-25 01:17:44 浏览次数:67 分类:技术文章

本文共 4776 字,大约阅读时间需要 15 分钟。

Customer.class

package com.an.entity;import lombok.Getter;import lombok.Setter;import java.util.HashSet;import java.util.Set;/** * @Author: WCY * @Date: 2019/8/27 16:55 */@Setter@Getterpublic class Customer {    //客户id    private Integer cid;    //客户名称    private String custName;    //客户级别    private String custLevel;    //客户来源    private String custSource;    //联系电话    private String custPhone;    //手机    private String custMobile;    //在客户实体类中里面表示多个联系人,一个客户对应多个联系人    //hibernate要求使用集合表示多的数据,使用set集合    private Set
linkManSet = new HashSet
();}
LinkMan.class
package com.an.entity;import lombok.Data;/** * @Author: WCY * @Date: 2019/8/27 16:56 */@Datapublic class LinkMan {    //联系人编号    private Integer lkm_id;    //联系人姓名    private String lkm_name;    //联系人性别    private String lkm_gender;    //联系人办公电话    private String lkm_phone;    //在联系人实体类中表示所属客户,一个联系人只能属于一个客户    private Customer customer;}

特别注意: 两个实体类中,最多只能有一个实体类包括对方的元素这里就是customer的toString有List<LinkMan>对象,LinkMan中的toString不能有Customer对象,否则导致堆栈溢出

LinkMan.hbm.xml

Customer.hbm.xml

hibernate核心配置文件

com.mysql.jdbc.Driver
jdbc:mysql:///hibernate
root
root
true
true
update
org.hibernate.dialect.MySQLDialect
thread

测试类

import com.an.entity.Customer;import com.an.entity.LinkMan;import com.an.toolkit.HibernateUtil;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.junit.Test;/** * @Author: WCY * @Date: 2019/8/27 17:48 */public class HibernateOneToMany {    //一对多的级联保存    @Test    public void addDemo(){        SessionFactory sessionFactory = null;        Session session = null;        Transaction tx = null;        try {            sessionFactory = HibernateUtil.getSessionFactory();            session = sessionFactory.openSession();            //开启事务            tx = session.beginTransaction();            //添加一个客户,为这个客户添加一个联系人            //1 创建联系人和客户对象            Customer customer = new Customer();            customer.setCustName("传智播客");            customer.setCustLevel("vip");            customer.setCustSource("网络");            customer.setCustPhone("110");            customer.setCustMobile("999");            LinkMan linkMan = new LinkMan();            linkMan.setLkm_name("lucy");            linkMan.setLkm_gender("男");            linkMan.setLkm_phone("911");            //2 把联系人放到客户set集合里面            customer.getLinkManSet().add(linkMan);            //3 保存客户            session.save(customer);            //提交事务            tx.commit();        }catch (Exception e){            e.printStackTrace();            tx.rollback();        }finally {            session.close();            sessionFactory.close();        }    }    //一对多的级联保存(简化版),使用前必须在一方(Customer.hbm.xml)中set标签里配置cascade="save-update"    @Test    public void sampleAddDemo(){        SessionFactory sessionFactory = null;        Session session = null;        Transaction tx = null;        try {            sessionFactory = HibernateUtil.getSessionFactory();            session = sessionFactory.openSession();            //开启事务            tx = session.beginTransaction();            //添加一个客户,为这个客户添加一个联系人            //1 创建联系人和客户对象            Customer customer = new Customer();            customer.setCustName("百度");            customer.setCustLevel("普通客户");            customer.setCustSource("网络");            customer.setCustPhone("110");            customer.setCustMobile("999");            LinkMan linkMan = new LinkMan();            linkMan.setLkm_name("小红包");            linkMan.setLkm_gender("男");            linkMan.setLkm_phone("911");            //2.1把联系人放到客户对象的set集合里面            customer.getLinkManSet().add(linkMan);            //3 保存到数据库中            session.save(customer);            //提交事务            tx.commit();        }catch (Exception e){            e.printStackTrace();            tx.rollback();        }finally {            session.close();            sessionFactory.close();        }    }}

转载地址:https://blog.csdn.net/qq_37746647/article/details/100106545 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:hibernate 基本使用配置
下一篇:dom4j和fastjson基本使用

发表评论

最新留言

感谢大佬
[***.8.128.20]2024年04月12日 18时03分38秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章