Hibernate数据关联映射之一对一和多对多
2017-05-19 23:33
447 查看
1.一对一关系映射配置
这里以人和身份证号为例,每个人都有唯一的身份证号与之对应
在Person.hbm.xml中配置如下
与之对应的Card.hbm.xml的配置如下
编写测试类AddTest.java
person表中ID如下,id为关联card表中id的外键约束
card表中数据如下
2.多对多关联映射
多对多关联映射的配置中,需要为双方实体类都指定set集合,以Teacher和Student为例,一个老师有多个学生,一个学生也有多个老师
student类定义如下
teacher类定义如下
多对多配置需要用到第三张表(这张表的作用就是配置两种表的关系), 第三张表当中只包含两个属性,表示两张表的ID,一般情况下,对于多对多的配置,第三张表用相同的表名。
student.hbm.xml配置如下,这里只写出set集合的配置
teacher.hbm.xml配置如下
这里以人和身份证号为例,每个人都有唯一的身份证号与之对应
在Person.hbm.xml中配置如下
<class name="Person" table="PERSON"> <!-- 注意一对一映射的主键生成策略 --> <id name="id"> <!--foreign表示外键--> <generator class="foreign"> <param name="property">card</param> </generator> </id> <property name="name"/> <one-to-one name="card" class="com.zhaolong.bean.Card"/> </class>
与之对应的Card.hbm.xml的配置如下
<class name="com.zhaolong.bean.Card" table="CARD"> <id name="id"> <!-- 主键有自己指定 --> <generator class="assigned"/> </id> <property name="no"/> <!-- 主键映射 使用one-to-one 不需要指定column --> <one-to-one name="person" class="Person" cascade="all"/> </class>
编写测试类AddTest.java
Card card=new Card(); //在xml中设置自己指定ID,所以需要用set方法设置ID card.setId(100); card.setNo("111111111111111111"); Person person=new Person(); person.setName("张三"); //设置对应关系 card.setPerson(person); person.setCard(card); session.save(card);
person表中ID如下,id为关联card表中id的外键约束
card表中数据如下
2.多对多关联映射
多对多关联映射的配置中,需要为双方实体类都指定set集合,以Teacher和Student为例,一个老师有多个学生,一个学生也有多个老师
student类定义如下
public class Student implements Serializable{ private Integer id; private String sname; private Set<Teacher> teachers=new HashSet<Teacher>(); //set和get方法
teacher类定义如下
public class Teacher implements Serializable{ private Integer id; private String tname; private Set<Student> students=new HashSet<Student>(); //set和get方法
多对多配置需要用到第三张表(这张表的作用就是配置两种表的关系), 第三张表当中只包含两个属性,表示两张表的ID,一般情况下,对于多对多的配置,第三张表用相同的表名。
student.hbm.xml配置如下,这里只写出set集合的配置
<set name="teachers" table="STUDENT_TEACHER"> <key column="sid"/> <many-to-many class="Teacher" column="tid" /> </set>
teacher.hbm.xml配置如下
<set name="students" table="STUDENT_TEACHER"> <key column="tid"/> <many-to-many class="Student" column="sid" /> </set>
相关文章推荐
- Eclipse快速上手Hibernate--5. 关联映射(一对一) 选择自 javamxj 的 Blog
- Hibernate笔记之6数据关联一对一
- Hibernate关系映射(4)_一对一双向主键关联
- Hibernate中的one2one映射实例二(一对一主键关联映射双向)
- hibernate:一对一外键关联映射(单向)
- Eclipse快速上手Hibernate--6. 关联映射(一对一)
- hibernate笔记(八)一对一关联映射分析
- Eclipse快速上手Hibernate--6. 关联映射(一对一)
- Hibernate关系映射(1)_一对一单向外键关联
- hibernate一对一唯一外键关联映射(双向关联PersonIdCard)
- hibernate一对一唯一外键关联单向映射
- Eclipse快速上手Hibernate--6. 关联映射(一对一)(摘自javaxmj的blog)
- Hibernate关联映射-----一对一关联
- Hibernate关系映射(5)_一对一单向联合主键关联
- Hibernate一对一数据关联:唯一外键关联
- Eclipse快速上手Hibernate--5. 关联映射(一对一) 选择自 javamxj 的 Blog
- Hibernate学习12 -- 关联映射2 -- 一对一关联1 -- 一对一主键关联
- hibernate映射一对一关联(主键关联)
- hibernate一对一唯一外键关联映射(单向关联Person----->IdCard)
- hibernate 一对一、多对一 双向关联的问题——只能在多的一方添加、修改数据,不能在多的一方修改添加