zoukankan      html  css  js  c++  java
  • 菜鸟学习Hibernate——一对多关系映射

         Hibernate中的关系映射,最常见的关系映射之一就是一对多关系映射例如学生与班级的关系,一个班级对应多个学生。如图:

          Hibernate中如何来映射这两个的关系呢?

          下面就为大家讲解一下:

    1、创建实体类Classes和实体类Student

    Classes.java

    package com.bjpowernode.hibernate;
    
    import java.util.Set;
    
    public class Classes {
    	
    	private int id;
    	
    	private String name;
    	
    	private Set students;
    
    	public int getId() {
    		return id;
    	}
    
    	public void setId(int id) {
    		this.id = id;
    	}
    
    	public String getName() {
    		return name;
    	}
    
    	public void setName(String name) {
    		this.name = name;
    	}
    
    	public Set getStudents() {
    		return students;
    	}
    
    	public void setStudents(Set students) {
    		this.students = students;
    	}
    	
    }
    


    Student.java

    package com.bjpowernode.hibernate;
    
    public class Student {
    
    	private int id;
    	
    	private String name;
    	
    	private Classes classes;
    
    	public int getId() {
    		return id;
    	}
    
    	public void setId(int id) {
    		this.id = id;
    	}
    
    	public String getName() {
    		return name;
    	}
    
    	public void setName(String name) {
    		this.name = name;
    	}
    
    	public Classes getClasses() {
    		return classes;
    	}
    
    	public void setClasses(Classes classes) {
    		this.classes = classes;
    	}
    }
    


    2、创建映射文件Classes.hbm.xml和Student.hbm.xml

    Classes.hbm.xml

    <?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" inverse="true">
    			<!-- 
    			<key column="classesid" not-null="true"/>
    			 -->
    			 <key column="classesid"/>
    			<one-to-many class="com.bjpowernode.hibernate.Student"/>
    		</set>
    	</class>
    </hibernate-mapping>


    Student.hbm.xml

    <?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.Student" table="t_student">
    		<id name="id">
    			<generator class="native"/>
    		</id>
    		<property name="name"/>
    		<many-to-one name="classes" column="classesid"/>
    	</class>
    </hibernate-mapping>


    3、效果图


    PS:我上面举例的是一对多双向关联的例子。有双向关联当然就有单向关联。下面举个例子来说明他们的区别

    如果Student添加了一条记录当中的classesid在Classes中没有这个id,双向关联的话则先添加学生这条记录然后再班级那里添加这个班级,然后再更新学生的classesid。单向关联的话先添加班级,然后再添加学生。

    Meet so Meet. C plusplus I-PLUS....
  • 相关阅读:
    TCP流量控制和拥塞控制
    延迟确认和Nagle算法
    浅谈TCP三次握手和四次挥手
    中介者模式
    代理模式
    装饰者模式
    生成器模式(构建者模式)
    策略模式
    模板方法模式
    抽象工厂模式
  • 原文地址:https://www.cnblogs.com/iplus/p/4490387.html
Copyright © 2011-2022 走看看