zoukankan      html  css  js  c++  java
  • 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储存多个一的对象,维护的重点在与多的一端,而多对一维护的重点在一的一端



  • 相关阅读:
    docker学习之network:初识网络配置
    原来:HTTP可以复用TCP连接
    git tag的用法及意义
    Android,社招,面淘宝,指南【内部人员为你保驾护航】
    别了,拼多多!再也不想砍一刀了,哔哩哔哩 (゜-゜)つロ 干杯~
    【Android面试宝典】2021年,腾讯等大厂Android高级开发面试完全攻略!
    腾讯40岁老兵现身说法:35岁职业生涯分水岭,架构or管理,到底怎么选?
    【整理合集】Flutter 常用第三方库、插件、学习资料等
    [PAT]1011 World Cup Betting (20 分)Java
    [PAT] 1010 Radix (25 分)Java
  • 原文地址:https://www.cnblogs.com/pangblog/p/3341621.html
Copyright © 2011-2022 走看看