1. 初识Hibernate——关系映射 http://blog.csdn.net/laner0515/article/details/12905711 2. Hibernate 笔记8 关系映射1(多对一,一对多): http://www.cnblogs.com/zilong882008/archive/2011/11/05/2236559.html 3. Hibernate关联映射 http://www.cnblogs.com/huxi/archive/2009/12/15/1624988.…
继上篇博客 多对多关联映射(单向) 多对多对象关系映射,须要增加一张新表完毕基本映射. Hibernate会自己主动生成中间表 Hibernate使用many-to-many标签来表示多对多的关联,多对多的关联映射,在实体类中,跟一对多一样,也是用集合来表示的. 例如以下图所看到的 通过User能够查看Role的信息 User的映射文件 <hibernate-mapping> <class name="com.bjpowernode.hibernate.User"&g…
概述 Hibernate的关系映射是Hibernate使用的难点或者是重点(别担心,不考试哦~),按照不同的分类方式可以对这些映射关系做一个分类,如: 按对象对应关系分: 一对一 多对一/一对多 多对多 按对象对应关系的方向分: 单向 双向 按是否使用连接表分(当然了像多对多是必须使用连接表的): 使用连接表 不使用连接表 在使用Hibernate中常常不会分得这么仔细,常常是集中分类方式糅合起来使用,但是这个分类可以帮助我们理解Hibernate中的映射关系. 在进行详细的介绍之前,首先需要明…
1.        单向一对一关联映射(one-to-one): 两个对象之间一对的关系,例如:Person(人)-IdCard(身份证) 有两种策略可以实现一对一的关联映射: *主键关联:即让两个对象具有相同的主键值,以表明它们之间的一一对应的关系:数据库表不会有额外的字段来维护它们之间的关系,仅通过表的主键来关联.如下图: 例子:单向一对一主键关联例子连接 *唯一外键关联:外键关联,本来是用于多对一的配置,但是加上唯一的限制之后(采用<many-to-one>标签来映射,指定多的一端uni…
在学习Hibernate框架的关系映射时,遇到了一个问题: INFO: HHH000422: Disabling contextual LOB creation as connection was null 在网上找了一下原因,以下是网上找的原文: 毕竟hibernate是有名的ORM框架,所以还是学着用一用,结果还是出了不少问题,文档啊文档,你就不能及时更新么. 首先在创建一个全局的SessionFactory中,文档中的示例代码是这样的,但这个是不能成功运行的,需要在try块中稍微改一下 p…
关系映射 一.映射(多)对一.(一)对一的关联关系 1).使用列的别名 ①.若不关联数据表,则可以得到关联对象的id属性 ②.若还希望得到关联对象的其它属性.则必须关联其它的数据表 1.创建表: 员工表: DROP TABLE IF EXISTS `tbl_employee`; CREATE TABLE `tbl_employee` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_name` varchar(255) DEFAULT NULL, `ge…
三.       多对一 –单向 场景:用户和组:从用户角度来,多个用户属于一个组(多对一 关联) 使用hibernate开发的思路:先建立对象模型(领域模型),把实体抽取出来. 目前两个实体:用户和组两个实体,多个用户属于一个组,那么一个用户都会对应于一个组,所以用户实体中应该有一个持有组的引用. (一) 对象模型图: (二) 关系模型:       (三) 关联映射的本质: 将关联关系映射到数据库,所谓的关联关系是对象模型在内存中一个或多个引用. (四) 实体类 User实体类: publi…
一.使用用户User和Role实现多对多的示例 User.java,实现对Role的引用 package com.lxit.entity; import java.util.HashSet; import java.util.Set; public class User { public User(){ } public User(String userid, String userName, String userPwd) { this.userid = userid; this.userNa…
一.多对一 学生Student和班级Grade实现多对一,多个学生对应一个班级. Student.java实体类,映射了班级的属性. package com.lxit.entity; import java.io.Serializable; public class Student implements Serializable {          public Student() {     }     public Student(String sname, String sex, Str…
在表设计中,我们一般都会考虑表与表之间的关系,现在我来介绍一下表与表之间的几种对应关系many-to-many 多对多 比如一个用户可以有多种角色 一种角色可以对用多个不同的用户所以角色和用户之间的关系是多对多的关系 一般要用第三张表表示两者对应的关系one-to-many 一对多 比如一个老师可以对应很多个学生many-to-one 相反的是多对一 one-to-one 一对一 比如公民和身份证就是一一对应的Demo实验:学生与课程之间的关系1.创建StuCourse类和StuCourse.h…
1.建表 2.创建实体类及映射文件 Student.java类 public class Student implements java.io.Serializable { // Fields private Integer sid; private String sname; private Set<Teacher> teachers=new HashSet<Teacher>(); // Constructors /** default constructor */ public…
多对一:比如多个订单对应同一个用户,需要在订单表中添加一个用户的属性 订单类: private Integer orderId; private Date createTime; private User user; 用户类: private int userId; private String userName; private String userPsw; 一的方配置xml(user): <?xml version="1.0" encoding="UTF-8&qu…
1.类级别注解 @Entity     映射实体类 @Table    映射数句库表 @Entity(name="tableName") - 必须,注解将一个类声明为一个实体bean. 属性: name - 可选,对应数据库中的一个表.若表名与实体类名相同,则可以省略. @Table(name="",catalog="",schema="")  - 可选,通常和@Entity 配合使用,只能标注在实  体的 class定义处,…
继上篇博客 一对多关联映射(单向) 上面我们介绍了多对一,我们反过来看一对多不就是多对一吗?那还用再进行不同的映射吗?有什么区别吗?一对多和多对一映射原理是一致的,存储是同样的.也就是生成的数据库的表是一样的.他们之间不同的是维护的关系不同. 他们之间不同点是维护的关系不同 *多对一维护的关系是:多指向一的关系.有了此关系,载入多的时候能够将一载入上来. *一对多维护的关系是:一指向多的关系.有了此关系,在载入一的时候能够将多载入上来. 一个班级有多个学生,通过班级能够看到学生信息. Class…
主要指对象之间的关系 1.一对一关联 一对一单项外键关联 比如说一夫一妻 Wifi.java package com.bjsxt.hibernate; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; @Entity public class Wife { private int id; private String name; @Id @G…
基于外键的双向一对一关联映射 需要在一端添加<one-to-one>标签,用property-ref来指定反向属性引用. 还是通过刚才用户和地址来演示双向一对一关联. 代码演示 一.实体类 Account.cs,需要添加被控端的引用 package com.lxit.entity; import java.io.Serializable; public class Account implements Serializable{ public Account(){ } private int…
模拟用户和地址的映射关系,一个用户只有一个地址,用户知道地址,但是地址不知道用户.用户对地址的单向一对一映射. 一.建立实体类 Account.cs类 package com.lxit.entity; import java.io.Serializable; public class Account implements Serializable{ public Account(){ } private int id; private String name; private String pa…
这里的关系指的是对象与对象之间的关系 注解方式单向关联一对一: //这个类描述的husband是一个对应一个wife的 import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.OneToOne; @Entity public…
一.@Entity 写在映射表的类上面,表示这是映射来的实体 二.@Id @Column(name = "fid", nullable = false) @Basic @Column(name = "fname", nullable = true, length = 10) 四.@OneToMany(mappedBy = "father",cascade = {CascadeType.ALL})(父亲端) @ManyToOne @JoinColu…
本实例使用用户(User)和博客(Post)的例子做说明: 一个用户可以有多个博客, 一个博客只对应一个用户 一. 例子(本实体采用maven构建): 1. 代码结构图: 2. 数据库: t_user 用户表: CREATE TABLE `t_user` ( `t_id` int(11) NOT NULL AUTO_INCREMENT, `t_name` varchar(26) NOT NULL, `t_age` int(11) NOT NULL, PRIMARY KEY (`t_id`) )…
在上一篇博客内容的基础上做了以下修改,即可实现.   注解方式:   package com.bjsxt.hibernate; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.OneToOne; @Entity public class Wife {     private int id;…
首先还是来构造一个实际应用的场景,比如实体类车辆(Car),它具有以下属性:Id,品牌(brand),车牌(lisencePlate):实体类车牌(LisencePlate),它具有以下属性:Id,号码(number),所属车辆(car).那么车辆和车牌是一对一的关系,一辆车只能有一个车牌,一个车牌也只能属于一辆车,不允许套牌,典型的一对一关系,依然是根据PowerDesigner反向工程反向出来的表结构如图: car这个表中有一个字段lisencePlate_id作为外键指向了lisence_…
首先还是来构造一个实际应用的场景,比如实体类车辆(Car),它具有以下属性:Id,品牌(brand),车牌(lisencePlate):实体类车牌(LisencePlate),它具有以下属性:Id,号码(number),所属车辆(car).那么车辆和车牌是一对一的关系,一辆车只能有一个车牌,一个车牌也只能属于一辆车,不允许套牌,典型的一对一关系,依然是根据PowerDesigner反向工程反向出来的表结构如图: car这个表中有一个字段lisencePlate_id作为外键指向了lisence_…
单向双向在数据库中没有区别,但是在java程序中有区别.   在程序中:双向的通过一个就可以找到另一个,单向的通过设置了对应关系的类可以找到它所对应的类,反过来就不行.   注解方式单向主键关联: 和外键一样,只不过注解由@JoinColumn变成@PrimaryKeyJoinColumn   import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id;…
接触Hibernate也有一小段的时间了,愈发的觉得Hibernate是个神奇的东西,为什么这么说呢?因为你可以不懂一行sql,直接面向对象,就可以将数据直接保存到数据库去!! 你还可以保存一个对象,然后一次性的将与它相关的所有数据保存到数据库,比如说,你只需要保存班级对象,就可以将该班级信息和该班级下的所有学生在数据库中形成一堆的记录. 而且都不需要你写sql!!! 有木有很神奇....反正宝宝我是惊呆了. 下面就拿具体的代码实现来讲吧~ 首先讲一个简单的  单向一对多的案例(以班级和学生作为…
关系映射 在我看来这些实体类就没啥太大关联关系,不就是一个sql语句解决的问题,直接多表查询就完事,程序将它设置关联就好 xml里面配置也是配置了sql语句,下面给出几个关系的小毛驴(xml) 一对多 <mapper namespace="com.entity.UserMapper"> <!--一对多关联查询 --> <resultMap id="user_info" type="com.entity.User"&g…
python中关系映射主要包括三种:一对多关系映射.一对一关系映射.多对多关系映射. 一对多关系映射 一方:Student(学生) 添加关联属性和反向引用 多方:Article(文章) 添加外键关联 一对一关系映射 一方:Student(学生)主表 添加多对多的关联属性和反向引用,同时uselist取值为FALSE,表示fetchone 添加第三张表的关联属性和反向引用关系 一方:Detail(详情表)次表 添加外键关联 多对多关系映射 多方:Users 添加多对多的关联属性和反向引用,同时指明…
下边讲述Hibernate多对多关系映射. 多对多关系的表的结构为: 两个实体表,还包含一个关系表,关系表为复合主键,如果要使用Hibernate多对多关系映射,则关系表必须只包含两个字段,如果生成了Hibernate多对多关系映射,则中间关系表不会生成实体(即没有对应的pojo类,更没有其映射文件). 1.建立表 DROP TABLE user_course ; DROP TABLE user ; DROP TABLE course ; CREATE TABLE user ( userid  …
Hibernate中的关系映射,最常见的关系映射之一就是多对多关系映射例如用户与角色的关系,一个用户对应多个角色,一个角色对应多个用户.如图: Hibernate中如何来映射这两个的关系呢? 下面就为大家讲解一下: 1.创建实体类User和实体类Role User.java package com.bjpowernode.hibernate; import java.util.Set; public class User { private int id; private String name…
对象之间的关系: 关系映射之间的关系只的是对象之间的关系,并不指数据库表的关系(外键关系)这儿解决的问题是当对象之间的关系之一时,数据库表该如何映射,编程上如何对待. 一对一(主键关联,和单向的外键关联) ①单向(主键,外键)Husband和Wife表,a,主键关联 b,外键关联(wife为parent) ,c,主键关联 d,外键关联(husband为parent) 一对一单向外键关联: annotation:@oneToOne  @JoinColumn(name="wifeId")…