Hibernate ORM - 一对多双向关联关系(我是韦小宝)
对于一对多的关联关系,通常的做法就是在多方映射的数据表中增加一个外键字段,用以保持一方的主键标识符,维持一对多的关联关系。
一。Husband
- package com.orm.model;
- import java.util.List;
- /**
- * Created by IntelliJ IDEA.
- * User: Zhong Gang
- * Date: 10/18/11
- * Time: 3:23 PM
- */
- public class Husband extends DomainObject {
- private String name;
- private List<Wife> wifes;
- public Husband(String name, List<Wife> wifes) {
- this.name = name;
- this.wifes = wifes;
- }
- }
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
- <hibernate-mapping default-access="field">
- <class name="com.orm.model.Husband" table="husband">
- <id name="id" column="id" type="java.lang.Integer">
- <generator class="native"/>
- </id>
- <property name="name" column="name" type="java.lang.String"/>
- <bag name="wifes" cascade="all">
- <key column="husbandid"/>
- <one-to-many class="com.orm.model.Wife"/>
- </bag>
- </class>
- </hibernate-mapping>
二。Wife
- package com.orm.model;
- /**
- * Created by IntelliJ IDEA.
- * User: Zhong Gang
- * Date: 10/18/11
- * Time: 3:23 PM
- */
- public class Wife extends DomainObject {
- private String name;
- private Husband husband;
- public Wife(String name) {
- this.name = name;
- }
- }
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
- <hibernate-mapping default-access="field">
- <class name="com.orm.model.Wife" table="wife">
- <id name="id" column="id" type="java.lang.Integer">
- <generator class="native"/>
- </id>
- <property name="name" column="name" type="java.lang.String"/>
- <many-to-one name="husband" column="husbandid" class="com.orm.model.Husband"/>
- </class>
- </hibernate-mapping>
三。测试代码
- package com.orm;
- import com.orm.model.Husband;
- import com.orm.model.Wife;
- import com.orm.service.CoupleService;
- import junit.framework.TestCase;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.support.ClassPathXmlApplicationContext;
- import java.util.ArrayList;
- import java.util.List;
- /**
- * Created by IntelliJ IDEA.
- * User: Zhong Gang
- * Date: 10/18/11
- * Time: 3:40 PM
- */
- public class HibernateOneToManyTest extends TestCase {
- private CoupleService coupleService;
- @Override
- public void setUp() throws Exception {
- ApplicationContext context = new ClassPathXmlApplicationContext("classpath:testDataSource.xml");
- coupleService = (CoupleService) context.getBean("coupleService");
- }
- public void testOneToOne() throws Exception {
- Wife wife1 = new Wife("wife1");
- Wife wife2 = new Wife("wife2");
- Wife wife3 = new Wife("wife3");
- List<Wife> wifes = new ArrayList<Wife>();
- wifes.add(wife1);
- wifes.add(wife2);
- wifes.add(wife3);
- Husband husband = new Husband("husband", wifes);
- coupleService.saveOrUpdate(husband);
- }
- }
测试结果截图
这是一个典型的一对多的双向关联关系,如果你需要的只是一对多的单向关联关系,删除任何一方对另一方的引用的同时删除相应配置文件中的many-to-one或者相应的集合元素即可。最后附上源码以供参考。
Hibernate ORM - 一对多双向关联关系(我是韦小宝)相关推荐
- hibernate映射一对多双向关联关系实例
在电子商务应用中,经常会有这样的需求:根据给定的客户,得到该客户的所有订单:根据给定的订单,得到该订单的所属客户.对于这种双向关联的情况,在Hibernate应用中,也有人叫多对一双向关联,只是叫法不 ...
- hibernate的一对多双向关联映射----客户和订单关系
客户和订单关系:客户是一的一方,订单是多的一方. customer表: CREATE TABLE `customer` ( `ID` int(4) NOT NULL AUTO_INCREMENT , ...
- 06章 映射一对多双向关联关系、以及cascade、inverse属性
当类与类之间建立了关联,就可以方便的从一个对象导航到另一个对象.或者通过集合导航到一组对象.例如: 对于给定的Emp对象,如果想获得与它关联的Dept对象,只要调用如下方法 Dept dept=emp ...
- Hibernate映射详解(二)--多对一,一对多单向,一对多双向关联映射
在我们以前的数据库设计中,设计表就不是一件轻松的事情.多种事物之间往往都是有这样那样的关系的.那怎样设计表格,才能既将事情描述明白,又能使数据库设计的比较合理呢?那里我们提供了好多规范,好多约束来满足 ...
- (八)Hibernate的一对多关联关系
一.概述 例如,以客户(Customer)和订单(Order)为例,一个客户能有多个订单,一个订单只能有一个客户. 从Customer到Order是一对多关联,在java类中的面向对象设计应该一个Cu ...
- Hibernate(九)一对多双向关联映射
上次的博文Hibernate从入门到精通(八)一对多单向关联映射中,我们讲解了一下一对多单向映射的相关 内容,这次我们讲解一下一对多双向映射的相关内容. 一对多双向关联映射 一对多双向关联映 射,即在 ...
- JPA中实现双向一对多的关联关系
场景 JPA入门简介与搭建HelloWorld(附代码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103473937 ...
- hibernate的映射之二(一对多双向关联)
hibernate的一对多双关联 一对多关联映射:在多的一端加入一个外键指向一的一端,它维护的关系是一指向多 hihernate一对多关联映射(双向Dept<----->Emp) 一对多双 ...
- hibernate 的一对多关联关系映射配置
hibernate 是操作实体类: 表是一对多的关系,当创建这2个实体的时候 在一的一方定义一个多的一方的集合 在多的一方定义一个一的一方的对象 表是多对多的关系,当创建这2个实体的时候 在互相中都有 ...
- 【SSH系列】Hibernate映射 -- 一对多关联映射
映射原理 一对多关联映射和多对一关联映射的映射原理是一样一样的,所以说嘛,知识都是相通的,一通百通,为什么说一对多关联映射和多对一关联映射是一样的呢?因为她们都是在多的一端加入 ...
最新文章
- 挖矿木马的战略战术分析
- std::shuffle-c++
- 19、HTML文件上传域
- Django中使用极验Geetest滑动验证码
- hdu-4704 sum(费马小定理)
- 多家大厂接连停产,半导体“最后一里路”面临“瘫痪”?
- jq之mousedown
- Spring Boot 针对 Java 开发人员的安装指南
- 缠中说禅形态挖掘之五笔形态
- 在51cto开博补充篇_为何叫~静水流深~
- matlab 读取mdf文件路径,访问 MDF 文件
- MATLAB Simulink Example
- MathWorks 中国
- 统计了300位硬件工程师的工资,我悟了
- 智慧城市是什么,建设智慧城市需要哪些核心技术?
- 带你了解什么是MySQL数据库(八)数据库锁机制
- 百度红包架构分析与推测
- 查看已安装Tomcat的版本号
- 如何给Pepper机器人配置ROS使其可以到达指定地点
- 共享内存—shmget参数shmflg详解—IPC_CREAT、IPC_EXCL、0666(对内存的读写执行权限)
- 破解大学寝室智能限电
- vue css变量实现多主题皮肤切换