0


Hibernate多表关联——(一对多关系)

Hibernate多表关联——(一对多关系)

文章目录

hibernate是连接数据库使得更容易操作数据库数据的一个框架,在上期我们演示了单表建立查询。接触过数据库的都知道数据库表有三种关系,
一对一,一对多,多对多。而接下来我们在hibernate中建立
一对多关系,首先应该检查一下数据库是否打开,根据
上一篇文章,接下来继续建立表的关系。这里创建两个类Custom和company,这两个表的关系就是:
一个公司有多名员工,一个员工只能属于一家公司,这里的多代表的就是员工,公司就是一。

1.分别在类中添加属性:

//员工类privateint lid;//员工idprivateString name;//员工姓名privateString tel;//员工电话privateString gender;//员工性别privateCompany company;//存入公司信息//添加相应的get和set方法即可

同样的在company类中添加属性

privateint cid;//公司idprivateString name;//公司名称privateString address;//公司地址//注意这里要创建一个集合用来保存和员工表之间的关系Set<Custom> companySet =newHashSet<>();//添加相应的get和set方法即可

2.hibernate建表

之后建立两个文件夹分别存放两个类的表结构,可以直接参照单表结构进行建立。

<!--Custom表结构--><hibernate-mapping><classname="com.hbnu.pojo.Custom"table="tb_Custom"><idname="lid"><generatorclass="native"></generator></id><propertyname="name"/><propertyname="tel"/><propertyname="gender"/><!--外键配置,此处非常关键 --><many-to-onename="company"class="com.hbnu.pojo.Company"column="clid"/></class></hibernate-mapping>

建立多表之间的联系时需要在建表时添加表的外键关系,这样才算表与表之间产生了联系。

而使用hibernate建立表时要注意,关系是建立在一对多,的一个关系属性的表中,也就是这里的公司。

<!--Company表结构--><hibernate-mapping><classname="com.hbnu.pojo.Company"table="tb_company"><idname="cid"><generatorclass="native"></generator></id><propertyname="name"/><propertyname="address"column="addr"></property><!--需要双方去维护的外键
        column:外键名称
        --><!--使用级联保存,在one中添加,在操作one的一方--><setname="companySet"><keycolumn="clid"></key><one-to-manyclass="com.hbnu.pojo.Company"/></set></class></hibernate-mapping>

创建完表,只需要随意使用一个测试类就可以看见表已经创建成功了

3.使用测试类在表中添加数据

综合以上,两个表之间的关系已经搭建完成,接下来我们在表中添加数据。

@Test//测试代码publicvoidtestOneToManySave(){SessionFactory sessionFactory =HibernateUtil.getSessionFactory();Session session = sessionFactory.openSession();Customs customs1 =newCustoms();
        customs1.setName("百度");
        customs1.setAddress("北京");Customs customs2 =newCustoms();
        customs2.setName("腾讯");
        customs2.setAddress("深圳");

        company company1 =newcompany();
        company1.setName("小李");
        company1.setTel("18569655111");
        company1.setGender("男");

        company company2 =newcompany();
        company2.setName("小顺");
        company2.setTel("18569655222");
        company2.setGender("男");

        company company3 =newcompany();
        company3.setName("小王");
        company3.setTel("18569655333");
        company3.setGender("男");

        company company4 =newcompany();
        company4.setName("小汤");
        company4.setTel("18569655444");
        company4.setGender("女");

        company company5 =newcompany();
        company5.setName("小明");
        company5.setTel("18569655666");
        company5.setGender("男");//建立关系
        customs1.getcompanySet().add(company1);
        customs1.getcompanySet().add(company2);
        customs1.getcompanySet().add(company3);

        company1.setCustoms(customs1);
        company2.setCustoms(customs1);
        company3.setCustoms(customs1);
        company4.setCustoms(customs2);
        company5.setCustoms(customs2);//保存数据
        session.save(1);
        session.save(customs2);
        
        session.save(company1);
        session.save(company2);
        session.save(company3);
        session.save(company4);
        session.save(company5);HibernateUtil.close(session,sessionFactory);}

在数据库中查看数据已经添加。

注意我这里表名有些出入,请遵守自己的代码即可。

在这里插入图片描述

这样添加数据有点繁琐,这里介绍一个标签

cascade="save-update"

添加该标签在外键关系中可以更加高效的添加数据,如图

在这里插入图片描述

该标签页添加在

customs

中。

如果再需要添加数据时就不需要将

custom

中数据进行Sava(保存),保存

company

数据即可。


本文转载自: https://blog.csdn.net/m0_51945115/article/details/129973733
版权归原作者 将船买酒白云边 所有, 如有侵权,请联系我们删除。

“Hibernate多表关联——(一对多关系)”的评论:

还没有评论