Hibernate(六)一对多映射(多对一)】的更多相关文章

一.Hinbernate中持久化类的关联关系 在数据库中,表表之间是通过外键关联的,在程序中是要转化为持久化类也就是(JAVA Bean)来实例的. 但在Hibernater中持久化的之间的映射关系,不是通外键建立关联,而是通过属性.主要有以下几种 一对一, 一对多(多对一) 多对多 关联方向: 单向关联 双向关联 二.一对多单向关联关系 2.1.建立数据库表 班级表,和学生表,学生生通过班级表中的,班级编号为外键 --班级表 create table grade ( gid number pr…
今天来说说hibernate中的多对多关联映射,多对多关联映射涉及到单向映射和双向映射2种. 首先举个多对多关联例子:用户User和角色Role,一个用户可以属于多个角色,一个角色可以有多个用户.这就是典型的多对多关联的例子.而单向关联映射则是只能由A端去操作B端,B端不能操作A端的数据.而双向关联映射则是A,B两端都可以操作另一端的数据. 先说单向关联映射,实体类如下: <span style="font-size:18px">/** * 学生类 * @author Lo…
hibernate作为一款优秀的ORM框架,广受大家喜爱,也被Java社区公认为持久层的首选.虽然jdbc为Java数据库操 作带来了诸多便利,但是并没有统一SQL语句的写法,而且具体操作数据库的代码也足够复杂,且存在大量重复.所以有了ORM框架,让Java程序员可以从 SQL语句中解放,Hibernate就是其中的翘楚.Hibernate将JDBC进一步的封装了,在SQL的可移植性方面表现优秀,并且使 Hibernate程序代码足够简化. ORM(对象关系映射)是面向对象程序员在代码的编写过程…
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 本篇博客将讲述Hibernate中的多对多关联关系的操作,准备的篇幅较少,望海涵 一,讲述多对多 多对多的关联关系,比如学生和教师来说,一个学生由多个教师授课,一个教师授课给多个学生,这就是多对多 讲述多对多,首先要有一个表叫做中间表,他来承载关联关系 二,实体类的创建 1.Stu学生类创建: package cn.dawn.day04.entity; /** * Created by Dawn on 20…
Hibernate中双向多对多的两种配置方式 1.建立多对多双向关联关系 package cn.happy.entitys; import java.util.HashSet; import java.util.Set; public class Employee { private Integer empid; private String empname; private Set<ProEmp> emps = new HashSet<ProEmp>(); public Set&…
Hibernate ManyToOne Mappings 多对一关联映射 Hibernate框架的使用步骤: 1.创建Hibernate的配置文件(hibernate.cfg.xml)2.创建持久化类,即事实上例须要保存到数据库中的类(Employee.java)3.创建对象-关系映射文件(Employee.hbm.xml) 4.通过Hibernate API编写訪问数据库的代码 样例:多个员工相应一个地址. 一.创建hibernate.cfg.xml 配置文件: 注意数据库名.用户名.密码是否…
数据库的多对多数据库中不能直接映射多对多 处理:创建一个桥接表(中间表),将一个多对多关系转换成两个一对多 注:数据库多表联接查询 永远就是二个表的联接查询 注2:交叉连接 注3:外连接:left(左)/right(右)/full(左右) 主从表:连接条件不成立时,主表记录永远保留,与null匹配 A B AB select * from A,B,AB WHERE A.aID=AB.aID and b.bid = AB.bid where 在hibernate中,你只管查询当前表对象即可, hi…
前面几篇文章已经较讲解了三大种关联映射,多对多映射就非常简单了,不过出于对关联映射完整性的考虑,本文还是会简要介绍下多对多关联映射. 1.单向多对多关联映射 情景:一个用户可以有多个角色,比如数据录入人员.商务主管等:一个角色也可以有多个人,比如张三和李四都是数据录入人员. 这里只维护用户到角色的单项关系:此处多对多的关联映射,需要三张表来维护. 那么在User实体里面需要假如角色的引用,在用户实体User的关系里面需要加入<many-to-many>标签来维护关系(假如引用返回java.ut…
现实中有很多场景需要用到多对一或者一对多,比如上面这两个类图所展现出来的,一般情况下,一个部门会有多名员工,一名员工只在一个部门任职. 多对一关联映射 在上面的场景中,对于Employee来说,它跟Department的关系就是多对一. 先写实体类 Employee.java package entity; public class Employee { public int id; public String name; public Department department; public…
目录 第一章 课程简介 第二章 Hibernate中的单向一对多关联 2-1 一对多映射简介 2-2 hibernate的基础配置 2-3 创建HibernateUtil工具类 2-4 在mysql数据库中建表 2-5 创建持久化和映射文件并配置一对多关系 2-6 测试--添加和查询学生信息 2-7 测试--修改和删除学生信息 2-8 set元素的常用属性 第三章 单向多对一关联 3-1 简介 3-2 单向多对一的配置 3-3 测试--添加学生信息 3-4 双向多对一测试 第四章 inverse…
上篇文章具体讨论了一对多映射,在一对多映射中单向的关联映射会有非常多问题,所以不建议使用假设非要採用一对多的映射的话能够考虑使用双向关联来优化之间的关系,一对多的映射事实上质上是在一的一端使用<many-to-one>标签来标明它们之间的关系,另外还须要在一的一端的对象中使用set标明集合映射. 一.单向多对多 仍然依照前几篇的文章格式来讨论.首先来看对象之间的关系,单向的多对多关系是两个对象之间发生的,比方在人和职位之间,一个人能够有多个职位,并且一个职位也能够由多人来负责,所以它们之间就形…
假设我们要建两张表,学生信息表(student)和年级信息表(grade),关系是这样的: 我们可以看出学生表和=年级表是多对一的关系,多个学生会隶属于一个班级,这种关系在hibernate中成为单边的多对一的关系,需要这样配置: 新建实体类Grade: public class Grade { private int id; private String name; private String teacher; //get/set方法省略 } 新建实体类Student: public cla…
现有三张表 TLXPURCHASE.采购事项审批表,TLXPURCHASEACTIVITY.采购招标活动对应表,TLXACTIVITY.招标活动表,采购事项审批表和采购活动表是多对多关系.java中定义了两个实体类,ActivityPO和PurchasesPO,在ActivityPO类中定义了private Set<PurchasesPO> purchases;// 采购事项字段.映射文件中配置了:    <!-- 采购事项 -->  <set name="purc…
1.创建实体和映射 package com.alice.hibernate03.vo; import java.util.HashSet; import java.util.Set; public class Student { private Integer id; private String sname; private Set<Course> courses = new HashSet<Course>(); public Integer getId() { return i…
序言 写这篇文章之前,自己也查了很多的资料来搞清楚这两者的关系和各自所做的事情,但是百度一搜,大多数博文感觉说的云里雾里,可能博主自己清楚是怎么一回事,但是给一个不懂的人或者一知半解的人看的话,别人也看不懂其中的关系,所以我自己写博文的时候,会尽量用通俗通俗在通俗的语言去描述一个概念,希望能尽自己的力量去帮助你们理解.光看我的是不行的,最关键的是要自己动手去实践一遍,能得出一样的结论,那就说明懂了,在我不懂的时候,我就去自己实现它,一次次尝试,慢慢的就总结出规律了. --WH 一.外键 我为什么…
序言 莫名长了几颗痘,真TM疼,可能是现在运动太少了,天天对着电脑,决定了,今天下午花两小时去跑步了, 现在继上一章节的一对多的映射关系讲解后,今天来讲讲多对多的映射关系把,明白了一对多,多对多个人感觉还是比较容易的,需要理清楚其数据库关系图,那么你就拿下了它.映射文件的配置还是那么些死东西. --WH 一.小疑问的解答 问题一:到这里,有很多学习者会感到困惑,因为他不知道使用hibernate是不是需要自己去创建表,还是hibernate全自动,如果需要自己创建表,那么主外键这种设置也是自己设…
序言 前面两节讲了hibernate的两个配置文件和hello world!.还有hibernate的一级缓存和三种状态,基本上hibernate就懂一点了,从这章起开始一个很重要的知识点,hibernate的关系映射.一对一.一对多.多对多的讲解.,希望你们能从中学到东西,我也从中巩固自己的知识 计划: one to many:单向一对多.many-to-one:单向多对一.双向一对多 这一篇文章讲完 many-to-many:下一篇 one-to-one:在下一篇 最后一篇:cascade和…
1.many-to-one 以学生和部门之间的关系为例: Department.hbm.xml <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-…
上一篇博文总结了 Hibernate 的一对一的关联关系, 包括基于主键的单向一对一, 基于外键的单向一对一, 基于外键的双向一对一. 下面咱们说一下 Hibernate 的一对多关联关系. 其实一对多和多对一是一样的, 一对多反过来想就是多对一了. Hibernate的一对多可分为: 1. 单向一对多. 2. 双向一对多. OneByOne 一: 单向一对多 准备工作: 咱们以 客户(Customer) 和 订单(Order) 的例子来说, 一个客户可以有多个订单, 但是一个订单只能属于一个客…
所需工具与前文一致! 第一部分内容:基本类型的一对多(one to many) 以部门表与员工表为例: 目录结构: hibernate.cfg.xml内容 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "h…
1.需求 项目与开发员工 一个项目,有多个开发人员 一个开发人员,参与多个项目 [多对多] 2.实体bean设计 Project: public class Project { private int prj_id; private String prj_name; private Set<Developer> devs = new HashSet<Developer>(); set... get... } Developer: public class Developer { p…
Student.java package cn.itcast.hiberate.sh.domain; import java.util.Set; public class Student { private Long sid; private String sname; private String description; Set<Course> courses; public Set<Course> getCourses() { return courses; } public…
前面两节我们讲到了一对一的关系,一对多,多对一的关系,相对来说,是比较简单的,但有时,我们也会遇到多对多的关系,比如说:角色与权限的关系,就是典型的多对多的关系,因此,我有必要对这种关系详解,以便大家一起学习.下面来看例子: 首先我们必须建立二者的vo: public class Role implements Serializable {//这是role对象 private Integer rid; private String rdesc; private String rname; pri…
学生和班级的例子来说,多个学生可以对应一个班级. 1.站在学生角度来说,学生就是多端.那么我们可以通过多对一来维护2者的关系. 2.站在班级的角度来说,班级就是一端.那么我们可以通过一对多啦维护2者的关系. 3.我们也可以双向关联两者的关系.(这个要牵涉到了反转) 无论是多对一还是一对多,最终生成的数据库的表中,都会在多的一端增加了一个外键来关联一的一端. 首先先站在学生的角度上 多对一: 最终生成的数据库: 下面是多对一映射中的字段意思: 一对多中: 生成的表结构和多对一 一样. 保存的时候,…
多对多,必须有一张关系表来维持关系 数据库student,teacher student_teacher 三张表 但是在pojo中只需要建立student和teacher两个类,除非关系表也代表某种业务(比如订单中,除了产品还会记录价格,数量等),但是这时候性质也就变了,成了两个一对多...好好想想... //分别Set public class Student { private Integer id; private String name; private Set<Teacher> te…
1.创建如下项目结构 2.在项目的src下创建hibernate.cfg.xml主配置文件 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/…
建立多对一的单向关联关系    Emp.java            private Integer empNo //员工编号            private String empName //员工姓名            //private Integer deptNo;  //部门编号            private Dept dept;    //所属部门    Dept.java            private Byte deptNo;              …
Hibernate多对多案例 1.用户对角色 DROP TABLE IF EXISTS emp_role; DROP TABLE IF EXISTS employee; DROP TABLE IF EXISTS role; CREATE TABLE employee( eid INT PRIMARY KEY AUTO_INCREMENT, ename ), egender ), ephone ) ); CREATE TABLE role( rtype INT PRIMARY KEY AUTO_I…
多对多映射关系 建立多对多单向关联关系 创建Employee类: public class Employee { private Integer empid; //员工编号 private String empname; //员工姓名 private Set<Project> projects = new HashSet<Project>(); //植入项目集合 } Employee.hbm.xml: <?xml version="1.0"?> &l…
情景:一个老师可能有多个学生,一个学生也可能有多个老师 多对一单向: 例如老师知道自己教哪些学生,学生却不知道自己被哪些老师教 方法:使用第三张表 分别存两张表的id annotation Student.java package com.bjsxt.hibernate; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import jav…