Hibernate数据关联映射之一对一和多对多
来源:互联网 发布:js 数组 map方法 编辑:程序博客网 时间:2024/05/16 17:11
1.一对一关系映射配置
这里以人和身份证号为例,每个人都有唯一的身份证号与之对应
在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方法设置IDcard.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>
阅读全文
0 0
- Hibernate数据关联映射之一对一和多对多
- hibernate关联映射:多对一、一对一
- Hibernate一对一关联映射和一对多关联映射
- Hibernate关联关系映射 一对一 一对多 多对一
- hibernate 第七章 映射一对一 多对多关联关系
- Hibernate之对象关系映射07一对一多单向关联
- Hibernate之一对一关联映射
- mybatis 的关联映射 一对一 对多
- Hibernate之关联关系映射(一对多和多对一映射,多对多映射)
- Hibernate 关联映射 之 一对一 关联
- hibernate关联映射之一对一单向关联
- 【Hibernate学习笔记】映射一对一关联与多对多关联
- Hibernate 关联映射之---- 一对一双向映射
- Hibernate之关联关系映射(一对一主键映射和一对一外键映射)
- Hibernate 关联映射 之 多对多 关联(一)
- Hibernate关联映射之--双向多对多关联
- Hibernate 关联映射 之 多对多 关联(一)
- Hibernate 关联映射之---- 多对多双向映射
- css3-transform
- Can not find the tag library descriptor for "http://java.sun.com/jsp/jstl/core"(使用forEach时出错)
- vue 自定义组件
- c++第六次作业
- BestCoder Round #84 Bellovin
- Hibernate数据关联映射之一对一和多对多
- 源码编译-nginx
- openssl 初始化函数到底做了什么?
- B
- 9、Linux下tftp服务器的安装及配置
- 设计模式之装饰者模式
- vuedev
- 源码编译-MySQL
- Linux下Apache与tomcat的整合