【Hibernate】——多对一与多对一关联映射

   关联映射,就是将关联映射到数据库中,所谓的关联关系在对象模型中就是一个或多个引用。这里把一对多和多一放在一起总结,因为这两个关联的映射原理是一样的,都是在多的一端加入一个外键指向一的一端。


多对一的User.Hbm.xml文件,在指向一的一端在多的一端采用<many-to-one/>标签:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC 
	"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
	"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
	<class name="com.bjpowernode.hibernate.User" table="t_user">
		<id name="id">
			<generator class="native"/>
		</id>
		<property name="name"/>
		<many-to-one name="group" column="groupid" cascade="save-update"/>
	</class>
</hibernate-mapping>


一对多的***.hbm .xml 文件,指向一的一端在多的一端采用<one-to-many/>标签


<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC 
	"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
	"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
	<class name="com.bjpowernode.hibernate.Classes" table="t_classes">
		<id name="id">
			<generator class="native"/>
		</id>
		<property name="name"/>
		<set name="students">
			 <key column="classesid"/>
			<one-to-many class="com.bjpowernode.hibernate.Student"/>
		</set>
	</class>
</hibernate-mapping>



二者的区别

  由上面的配置文件可以看出二者的区别在于维护的关系不同:


多对一维护的关系是:多指向一的关系,有了此关系,在加载多的时候可以将一加载上来。


一对多维护的关系是:一指向多的关系,有了此关系,在加载一的时候可以将多加载上来。


     在一一端维护关系存在的缺陷,因为多的一端 不知道一的一端的存在,也就多端没有维护一一端的关系,所一在保存多端的时候关系字段一端的主键是为null,如果讲该关系字段设置为非空,则将无法保存数据。另外因为多端不维护关系,而一端维护关系,一端就会发出多余的update语句,保证一端和多端有关系,这样加载一端的时候才可以把一端对应的数据加载上来。


    总结至此,算是弄明白了多对一与一对多的区别。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值