Hibernate ORM - 一对多双向关联关系(我是韦小宝)
来源:互联网 发布:淘宝显示几人付款 编辑:程序博客网 时间:2024/04/20 02:07
对于一对多的关联关系,通常的做法就是在多方映射的数据表中增加一个外键字段,用以保持一方的主键标识符,维持一对多的关联关系。
一。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 -- 一对多的双向关联关系
- Hibernate 建立一对多双向关联关系
- Hibernate中双向一对多关联关系
- Hibernate中关联关系一对多(双向关联)
- hibernate映射总结详解: 映射一对多双向关联关系
- hibernate映射一对多双向关联关系实例
- Hibernate的一对多关联关系(单向和双向)
- Hibernate一对多双向关联
- Hibernate一对多双向关联
- Hibernate一对多双向关联
- Hibernate一对多双向关联
- Hibernate一对多双向关联
- Hibernate一对多双向关联
- hibernate双向一对多关联
- Hibernate双向一对多关联
- Core Java (二十四) SortedMap,NavigableMap,SortedSet,NavigableSet接口
- Teach Yourself Programming in Ten Years -Peter Norvig
- 《代码整洁之道》-- 第2章 有意义的命名
- C++ Primer 第二遍阅读笔记(第三章)
- OpenCV学习笔记(二)—IplImage数据结构
- Hibernate ORM - 一对多双向关联关系(我是韦小宝)
- 2012总结--第8篇--感情篇
- tomcat下查看并发流量
- [Unity3D]手机3D游戏开发:如何实现最高分的存储与显示(九)----使用PreviewLabs插件提速与完整的项目源码
- Redis源码解析 - 客户端工作流程及命令编码
- ubuntu 加速
- Windows 通信基础(Windows Communication Foundation)
- PS讲义
- PIC单片机(PIC16F873)小项目五(电路工作原理)