创建Coustoms.java
添加下列元素,分别创建set
和get
。
//员工类
private int lid;//员工id
private String name;//员工姓名
private String tel;//员工电话
private String gender;//员工性别
private Company company;//存入公司信息//添加相应的get和set方法即可
同样的在company类中添加属性
private int cid;//公司id
private String name;//公司名称
private String address;//公司地址
//注意这里要创建一个集合用来保存和员工表之间的关系
Set<Custom> companySet = new HashSet<>();
//添加相应的get和set方法即可
之后建立两个文件夹分别存放两个类的表结构,可以直接参照单表结构进行建立。l
与coustoms
表形成关系映射,与上一个文章相同,这里也需要创建关系映射map
。
添加相同头文件:
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE hibernate-mapping PUBLIC"-//Hibernate/Hibernate Mapping DTD 3.0//EN"".0.dtd">
对象与文件的映射:
<!--Custom表结构-->
<hibernate-mapping><class name="com.hbnu.pojo.Custom" table="tb_Custom"><id name="lid"><generator class="native"></generator></id><property name="name"/><property name="tel" /><property name="gender"/><!--外键配置,此处非常关键 --><many-to-one name="company" class="com.hbnu.pojo.Company" column="clid"/></class>
</hibernate-mapping>
建立多表之间的联系时需要在建表时添加表的外键关系,这样才算表与表之间产生了联系。
而使用hibernate建立表时要注意,关系是建立在一对多的一个关系属性的表中,也就是这里的公司。
<!--Company表结构-->
<hibernate-mapping><class name="com.hbnu.pojo.Company" table="tb_company"><id name="cid"><generator class="native"></generator></id><property name="name" /><property name="address" column="addr"></property><!--需要双方去维护的外键column:外键名称--><!--使用级联保存,在one中添加,在操作one的一方--><set name="companySet"><key column="clid"></key><one-to-many class="com.hbnu.pojo.Company"/></set></class></hibernate-mapping>
创建完表,只需要随意使用一个测试类就可以看见表已经创建成功了。创建完成需要在l
进行声明。在上一篇文章中我们写入l
声明。在l
中写入两个文件的路径。
<mapping resource="service/l"/>
<mapping resource="service/l"/>
每次连接操作数据库时都需要创建对象连接,我们可以创建一个对象来封装数据库中的操作对象。
首先创建一个文件夹util
作为存放封装对象的文件夹。创建一个HibernateUtil
类对象里面封装三个方法:
1.解析hibernate配置文件,返回一个SessionFactory
2.获得SessionFactory中的session对象
3.关闭资源操作
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;public class HibernateUtil {private Configuration configuration = null;private SessionFactory sessionFactory = null;private Session session = null;//1.解析hibernate配置文件,返回一个SessionFactorypublic SessionFactory getSessionFactory(){configuration = new Configuration().configure();sessionFactory = configuration.buildSessionFactory();return sessionFactory;}//2.获得SessionFactory中的session对象public Session getSession(){session = getSessionFactory().openSession();return session;}//3.关闭资源操作private void clos (Session session,SessionFactory sessionFactory,Configuration configuration){if(session != null){session.close();}if(sessionFactory != null){sessionFactory.close();}if(configuration != null){sessionFactory.close();}}
}
需要使用数据库对象时,直接调用getSession()
。
综合以上,两个表之间的关系已经搭建完成,接下来我们在表中添加数据。
@Test
//测试代码public void testOneToManySave(){Session session = Session();Customs customs1 = new Customs();customs1.setName("百度");customs1.setAddress("北京");Customs customs2 = new Customs();customs2.setName("腾讯");customs2.setAddress("深圳");company company1 = new company();company1.setName("小李");company1.setTel("18569655111");company1.setGender("男");company company2 = new company();company2.setName("小顺");company2.setTel("18569655222");company2.setGender("男");company company3 = new company();company3.setName("小王");company3.setTel("18569655333");company3.setGender("男");company company4 = new company();company4.setName("小汤");company4.setTel("18569655444");company4.setGender("女");company company5 = new company();company5.setName("小明");company5.setTel("18569655666");company5.setGender("男");//建立关系panySet().add(company1);panySet().add(company2);panySet().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,null,null);}
在数据库中查看数据已经添加。
注意我这里表名有些出入,请遵守自己的代码即可。
级联保存:cascade="save-update
添加该标签在外键关系中可以更加高效的添加数据,如图
该标签页添加在customs
中。
如果再需要添加数据时就不需要将custom中数据进行save
(保存),保存company数据即可。
级联删除:delete
删除表中数据时就不需要将custom中数据进行delete
,直接删除company数据即可。
本文发布于:2024-01-30 04:50:59,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170656146319343.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |