- 浏览: 84246 次
- 性别:
- 来自: 上海
文章分类
最新评论
hihernate一对多关联映射(单向Classes----->Student)
一对多关联映射利用了多对一关联映射原理
多对一关联映射:在多的一端加入一个外键指向一的一端,它维护的关系是多指向一
一对多关联映射:在多的一端加入一个外键指向一的一端,它维护的关系是一指向多
也就是说一对多和多对一的映射策略是一样的,只是站的角度不同
在一一端维护关系的缺点:
* 如果将t_student表里的classesid字段设置为非空,则无法保存
* 因为不是在student这一端维护关系,所以student不知道是哪个班的,
所以需要发出多余的update语句来更新关系
-----------------------------------------------------------------
hihernate一对多关联映射(双向Classes<----->Student)
一对多双向关联映射:
* 在一一端的集合上使用<key>,在对方表中加入一个外键指向一一端
* 在多一端采用<many-to-one>
注意:<key>标签指定的外键字段必须和<many-to-one>指定的外键字段一致,否则引用字段的错误
如果在”一“一端维护一对多关联关系,hibernate会发出多余的udpate语句,所以我们一般在多
的一端来维护关联关系
关于inverse属性:
inverse主要用在一对多和多对多双向关联上,inverse可以被设置到集合标签<set>上,
默认inverse为false,所以我们可以从”一“一端和”多“一端维护关联关系,
如果设置成inverse为true,则我们只能从多一端来维护关联关系
注意:inverse属性,只影响数据的存储,也就是持久化 .通常配合cascade="all"使用。
inverse和cascade
* inverse是关联关系的控制方向
* cascade操作上的连锁反应
一对多关联映射利用了多对一关联映射原理
多对一关联映射:在多的一端加入一个外键指向一的一端,它维护的关系是多指向一
一对多关联映射:在多的一端加入一个外键指向一的一端,它维护的关系是一指向多
也就是说一对多和多对一的映射策略是一样的,只是站的角度不同
在一一端维护关系的缺点:
* 如果将t_student表里的classesid字段设置为非空,则无法保存
* 因为不是在student这一端维护关系,所以student不知道是哪个班的,
所以需要发出多余的update语句来更新关系
<class name="Classes" table="t_classes"> <id name="id"> <generator class="native"/> </id> <property name="name"/> <set name="students"> <key column="classesid"/> <one-to-many class="Student"/> </set> </class>
<class name="com.bjsxt.hibernate.Student" table="t_student"> <id name="id"> <generator class="native"/> </id> <property name="name"/> </class>
-----------------------------------------------------------------
hihernate一对多关联映射(双向Classes<----->Student)
一对多双向关联映射:
* 在一一端的集合上使用<key>,在对方表中加入一个外键指向一一端
* 在多一端采用<many-to-one>
注意:<key>标签指定的外键字段必须和<many-to-one>指定的外键字段一致,否则引用字段的错误
如果在”一“一端维护一对多关联关系,hibernate会发出多余的udpate语句,所以我们一般在多
的一端来维护关联关系
关于inverse属性:
inverse主要用在一对多和多对多双向关联上,inverse可以被设置到集合标签<set>上,
默认inverse为false,所以我们可以从”一“一端和”多“一端维护关联关系,
如果设置成inverse为true,则我们只能从多一端来维护关联关系
注意:inverse属性,只影响数据的存储,也就是持久化 .通常配合cascade="all"使用。
inverse和cascade
* inverse是关联关系的控制方向
* cascade操作上的连锁反应
<class name="Classes" table="t_classes"> <id name="id"> <generator class="native"/> </id> <property name="name"/> <set name="students" inverse="true" cascade="all"> <key column="classesid"/> <one-to-many class="Student"/> </set> </class>
<class name="com.bjsxt.hibernate.Student" table="t_student"> <id name="id"> <generator class="native"/> </id> <property name="name"/> <many-to-one name="classes" column="classesid"/> </class>
Session session = null; try { session = HibernateUtils.getSession(); session.beginTransaction(); Classes classes = new Classes(); classes.setName("尚学堂"); Student student1 = new Student(); student1.setName("10"); student1.setClasses(classes); Student student2 = new Student(); student2.setName("祖儿"); student2.setClasses(classes); Set students = new HashSet(); students.add(student1); students.add(student2); classes.setStudents(students); //可以正确保存 session.save(classes); session.getTransaction().commit(); }catch(Exception e) { e.printStackTrace(); session.getTransaction().rollback(); }finally { HibernateUtils.closeSession(session); }
发表评论
-
Fetch抓取策略
2008-12-21 15:30 10591 hibernate抓取策略(单端代理的批量抓取) 保持默 ... -
查询缓存
2008-12-21 13:27 2528查询缓存是针对普通属性结果集的缓存,对实体对象的结果集只缓存i ... -
二级缓存
2008-12-21 09:55 838二级缓存也称进程级的缓存或SessionFactory级的缓存 ... -
一级缓存
2008-12-20 21:18 846一级缓存很短和session的生命周期一致,一级缓存也叫ses ... -
HQL 原生SQL查询 外置命名查询 查询过滤器 DML风格的查询
2008-12-20 15:04 1295在hql中关键字不区分大小写,但是属性和类名区分大小写 1、简 ... -
冬夜读书示子律
2008-12-19 16:11 814古人学问无遗力,少壮功夫老始成。 纸上得来终觉浅,绝知此事要躬 ... -
悲观锁与乐观锁
2008-12-19 15:49 760悲观锁 悲观锁的实现,通常依赖于数据库机制,在整个过程中将数据 ... -
Set Map Arrary List 集合映射
2008-12-19 14:50 861<class name="com.bjsxt. ... -
composite 映射
2008-12-19 10:48 783通常将复合主键相关的属性,单独放到一个类中 * 此类必须实现序 ... -
Component 映射
2008-12-19 09:54 683在hibernate中,component是某个实体的逻辑组成 ... -
继承映射
2008-12-18 21:05 868继承映射分为三种: 1 单表继承:每颗类继承树使用一个表(ta ... -
LAZY策略
2008-12-18 14:26 740hibernate lazy策略可以使用在: * <cl ... -
Many-to-Many
2008-12-18 10:36 787hibernate多对多关联映射(单向User----> ... -
session --------- flush() 和 evict()
2008-12-17 14:00 2272session flush方法主要做了 ... -
数据库隔离级别
2008-12-17 13:57 822隔离级别 脏读 不可重复读 幻读 R ... -
One-to-one( 2 唯一外键关联)
2008-12-17 11:12 914hibernate一对一唯一外键关联映射(单向关联Person ... -
one-to-one(1主键关联)
2008-12-16 20:23 1781主键关联-----单向 <class name=&qu ... -
many-to-one
2008-12-16 20:15 755<class name="com.bjsx ... -
Hibernate3包问题org/slf4j/impl/StaticLoggerBinder
2008-12-15 13:55 4269Exception in thread "main& ...
相关推荐
"Hibernate one-to-many / many-to-one关系映射"是两个基本的关系类型,用于表示实体间的关联。在这个主题中,我们将深入探讨这两种关系映射的原理、配置和实际应用。 一、一对一(one-to-one)与一对多(one-to-...
本话题主要探讨两种基本的关系映射类型:many-to-one(多对一)和one-to-many(一对多)。这两种关系映射是数据库中常见的关联类型,理解和掌握它们对于开发高质量的Java应用至关重要。 1. many-to-one关系 many-to...
在配置双向一对多关联时,我们通常在"多"一端(这里是`Student`)的集合属性上使用`<many-to-one>`标签,将`Classes`对象映射到数据库中的外键。同时,在"一"端(`Classes`)使用`<set>`标签,表示班级可以包含多个...
同时,`Account.hbm.xml`中的`many-to-one`元素将`column`属性设置为`FID`,表示通过`FID`字段关联到`User`实体。 #### 测试场景解释 在测试场景中,我们创建了一个`User`对象和一个`Account`对象,并在`User`对象...
在Hibernate中,`one-to-many`关系是常见的实体间关系之一,表示一个实体可以与多个其他实体相关联。本文将深入探讨`Hibernate one-to-many`注解的使用和实现细节。 ### 一、`@OneToMany`注解概述 `@OneToMany`...
在数据库世界中,一对多(One-to-Many)关系是一种常见的关联类型,其中一个表(父表)可以与多个其他表(子表)相关联。在NHibernate中,配置这种映射关系对于理解和使用ORM至关重要。 一对多关系意味着一个实体...
本文主要关注Hibernate中的一个核心概念——一对一(One-to-One)、一对多(One-to-Many)和多对一(Many-to-One)关联映射,特别是关于“一到多”单向和双向关联映射的配置心得。 首先,让我们了解“一到多”关联...
### Hibernate Many-to-One (多对一) 及 Cascade (级联) #### 一、Many-to-One(多对一) 在数据库设计中,实体之间的关系主要包括一对一、一对多、多对多等几种类型。而在ORM(对象关系映射)框架Hibernate中,...
本实例将详细讲解如何在Hibernate中实现Many-to-One关系映射,这是一种常见的数据库关联,表示一个实体可以与多个其他实体相关联。 在Many-to-One关系中,通常一个实体(如部门)可以有多个相关实体(如员工),而...
标题“hb-04-one-to-many-uni”和描述中的信息看似简洁,但结合标签“Java”,我们可以推测这是一个关于Java编程中的一个特定主题——一对一(One-to-One)、一对多(One-to-Many)关系的统一处理(uni)的示例项目...
标题"Hibernate one to many(many to one) 配置"涉及到的是关系型数据库在Java中的持久化框架Hibernate中的两种关联映射关系:一对一(One-to-One)和多对一(Many-to-One)。在数据库设计中,这种关系很常见,例如...
"one-to-many"是数据库关系模型中的一种关联类型,表示一个实体可以与多个其他实体相关联。在这个例子中,我们将深入探讨如何在NHibernate中实现这种关系。 在传统的数据库设计中,one-to-many关系通常体现在一个表...
#### 一、多对一关联(Many-to-One) 在本章中,我们将探讨如何在 Hibernate 中处理多对一关联。这种关联类型非常常见,在许多应用中都会遇到。例如,在一个在线书店应用中,每本书都与一个出版商关联,而一个出版...
关联映射的本质: 将关联关系映射到数据库,所谓的...<many-to-one>会在多的一端加入一个外键,指向一的一端,这个外键是由<many-to-one> 中的column属性定义的,如果忽略了这个属性那么默认的外键与实体的属性一致
标题提到的“org-one-to-many”是一个Elisp(Emacs Lisp)扩展,旨在将一个大的Org文件拆分为多个小文件,每个小文件对应于原文件中特定级别的标题。这种功能有助于更好地管理和维护大型文档,提高编辑效率。 Org...
当你克隆或下载了“webrtc-one-to-many-master”压缩包并解压后,你可以按照以下步骤操作: 1. **安装依赖**: 在命令行中,导航到项目根目录,然后运行`npm install`或`yarn`。这会根据`package.json`文件中的...
在上面的配置中, `<many-to-one>` 标签指定了Person实体与IdCard实体之间的一对一唯一外键关联关系,其中unique="true"指定了多的一端的多重性为一。 Hibernate 一对一唯一外键关联映射的应用 在实际应用中,一对...
【标题】"hibernate-one-to-many-uni" 指的是在Hibernate框架下实现的一对多单向关联关系。Hibernate是Java开发中常用的持久化框架,它简化了数据库操作,使得开发者可以更加专注于业务逻辑而不是数据库交互。在这个...
标题中的“hibernate - one to many - update”指的是Hibernate框架中关于一对一(One-to-Many)关系映射和更新操作的知识点。在Java开发中,Hibernate是一个流行的对象关系映射(ORM)工具,它允许开发者用面向对象...
many-to-one 配置详解 讲的很清楚 适合新手 值得下载