在我们的日常生活中,用到最多的就是双向一对多的关系,最普遍的映射关系是一对多的关系,比如部门和职工,这是从部门的角度来说。从职工的角度来说,就是多对一的关系,职工和部门。
但一对多和多对一的执行效率太慢了,所以使用双向一对多的原因就是:提高执行效率。
- 多对一的运行原理:在多的一端加入一个外键指向一的一端,它维护的关系多指向一的一方,不需要维护关系,多的一方,需要维护双方关系,所以里面配置有一的一方的引用。
- 单向一对多的运行原理:实体之间关系由”一”的一端加载”多”的一端,关系由”一”的一端来维护。也就是说在”一”的一端持有”多”的一端的集合。我们在加载”一”的时候把”多”也加载进来了,也就是在部门中维护职工的集合。(我们可以根据部门找到属于这些部门的所有职工。但是不能根据职工找到它所属的部门)。
- 双向一对多:所谓的双向一对多关联,同时配置单向多对一和单向一对多就可以构成双向一对多关联关系。它在解决单向一对多关系存在的缺陷起到了一定的修补作用,提高效率。
我已经把我的项目上传了大家可以下载看看https://download.csdn.net/download/amazing_banana/11014465
现在我们来进行双向一对多的代码测试:
首先我们要有jia包:
jar包大家就自己找一下
- 接下来我们配置hibernate.cfg.xml,在src下创建一个folder,名字为config
1.接下来为大家展示代码:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- property 元素用于配置Hibernate中的属性
键:值
-->
<!-- hibernate.connection.driver_class : 连接数据库的驱动 -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- hibernate.connection.username : 连接数据库的用户名 -->
<property name="hibernate.connection.username">root</property>
<!-- hibernate.connection.password : 连接数