• Hibernate入门之关系篇:多对一和一对多映射


    关联关系映射,是对象映射关系中相对复杂的一种,但也是用处最多的一种,因为数据中的表不可能都是单独存在,彼此之间必定存在千丝万缕的联系,这也是关系型数据库的特征所在。同样关联关系的映射,也是对象关系映射中的难点,重点,仔细揣摩,也还是很容易理解掌握的。

             上篇博客,从最简单的一对一映射开始最开端。在关系映射里面,使用频率最高的就是,一对多和多对一的关系。本文,介绍简单的一对多和多对一关系的实现。

             一对多关系的建立:

             (1)建立实体类


    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;
    		}	
    	}
    
    	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)建立配置文件:

    <class name="com.zs.hibernate.Classes" table="t_classes">
    		<id name="id">
    			<generator class="native"/>
    		</id>
    		<property name="name"/>
    		<set name="students" inverse="true">		
    			<key column="classesid"/>
    			<one-to-many class="com.zs.hibernate.Student"/>
    		</set>
    	</class>
    	
    	<class name="com.zs.hibernate.Student" table="t_student">
    		<id name="id">
    			<generator class="native"/>
    		</id>
    		<property name="name"/>
    		<many-to-one name="classes" column="classesid"/>
    	</class>
    


    多对一关系:

    (1)      建立实体(代码略)

    (2)      配置文件

    <class name="com.zs.hibernate.User" table="t_user">
    		<id name="id">
    			<generator class="native"/>
    		</id>
    		<property name="name"/>
    		<set name="roles" table="t_user_role">
    			<key column="user_id"/>
    			<many-to-many class="com.zs.hibernate.Role" column="role_id" />	
    		</set>
    	</class>
    	
    	<class name="com.zs.hibernate.Role" table="t_role">
    		<id name="id">
    			<generator class="native"/>
    		</id>
    		<property name="name"/>
    	</class>
    

    (3)      生成表关系

    其中多对一关系,同一对一映射的外键关联基本上差不多,只是一对一映射,又加入唯一性的约束。

             之所以两种关系写在一起,由于两种关系生成的表关系相同,在物理模型方面,维护方式相同。但是从对象方面考虑,一对多关系,是利用set储存多个一的对象,维护的重点在与多的一端,而多对一维护的重点在一的一端



  • 相关阅读:
    HTML总结
    js五角星评分特效
    正则表达式
    C#文件路径的写法
    vs2010发布网站
    INI文件阅读器
    .net读取xml文件中文乱码问题解决办法
    js利用定时器动态改变层大小
    c#中ref和out的用法
    分享一篇关于C#对文件操作的日志,方法很全
  • 原文地址:https://www.cnblogs.com/pangblog/p/3341621.html
Copyright © 2020-2023  润新知