多对多的映射实现
一般多对多关联会拆分成两个一对多的关系来实现多对多关系,也可以通过hibernate提供的解决方案来实现。其实hibernate的实现方式是通过中间表间接的实现了多对多关系,实际上也是将多对多拆分成两个双向的一对多关系。
多对多关系XML文件的配置
<hibernate-mapping>
<class name="Course" table="course">
<set name="clazz" table="class_course" inverse="true"><!--设置中间表的表名-->
<key column="courseid">
<many-to-many column="classid" class="Clazz"/>
</set>
</class>
</hibernate-mapping>
<hibernate-mapping>
<class name="Clazz" table="class">
<set name="course" table="class_course" cascade="save-update">
<key column="classid"/>
<many-to-many column="courseid" class="Course"/>
</set>
</class>
</hibernate-mapping>
Hibernate知识点小记
一、cascade
cascade属性是设置级联操作的也就是在操作一端的数据如果影响到多端数据时会进行级联操作,一对一的时候直接写在标签上,其他的要写在set标签上
cascade="none|save-update|all|all-delete-orphan"
none 就是不使用级联操作,默认级联是none。
save-update 也就是只有对象保存操作(持久化操作)或者是持久化对象的更新操作,才会级联操作关联对象(子对象)。
all 对持久化对象的所有操作都会级联操作关联对象(子对象)。
all-delete-orphan,在多端进行删除操作时,会再多端表中留下null空纪录,设置了级联操作为delete之会将表中表示关联的外键id置成null,不会将这条纪录也删除掉,而把级联设置成delete-orphan就不会留有空纪录,而是级联的把相关纪录删除掉。
二、inverse
inverse="true"就是在设置如果在内存中的修改或添加了这个集合中的某一个或某几个对象他不会将全部集合的信息同步到数据库,而是只将集合中被修改的对象重新同步到数据库
三、lazy
lazy=“true”
延迟加载,所谓的延迟加载,就是对一端的集合属性的加载策略,就是在不使用到集合中的对象的数据就不会真正的加载集合中的对象数据,而是家在一个代理对象就相当于的一个空的容器。
这也就是会出现LazyInitializationException异常,也就是没有初始化这个代理的集合对象,在事先查询到了集合中的对象就会初始化这个对象,如果Session没有关闭就会在查询加载集合中的对象信息,如果提前关闭了Session,当使用集合中的对象信息时就会有这个异常。
四、fetch
fetch=“join”,这就是使用了预先抓取策略,也就是针对关联的对象的加载策略,在使用到关联对象的信息时会再发送sql语句,如果不使用fetch=“join”,就会不使用表连接而是先查出一端的关联id再一条一条的发送sql语句查询到关联对象信息,使用了fetch=“join”就会使用表连接将关联对象信息直接查寻出来的。fetch=“lazy”这个是默认的设置。
五、多对多
写配置文件的时候要紧记一个原则就不会错了:
<key column =””>总是和本身类的主键id对应
<column=””>总是和关联类的主键id相对应
比如:
<set name="courses" table="enrollments " inverse="true" cascade="save-update">
<key column="sid"/>
<many-to-many class="Course" column="cid" />
</set>
Component Mapping包含的元素又是另外一个类(表)
============================================================================
create table account(
id integer primary key,
name varchar2(32) not null,
balance double not null,
street varchar2(32),
city varchar2(32),
province varchar2(32),
zip varchar2(16)
);
-----------------------------------------------------------------------------
<hibernate-mapping package="hbn.valuetype.component">
<class name="Account" table="ACCOUNT">
<id name="id" unsaved-value="null">
<generator class="hilo">
<param name="table">pk_table</param>
<param name="column">id_value</param>
</generator>
</id>
<property name="name"></property>
<property name="balance"></property>
<component name="addr">
<property name="street"></property>
<property name="city"></property>
<property name="province"/>
<property name="zip"/>
</component>
</class>
</hibernate-mapping>
============================================================================
分享到:
相关推荐
本压缩包包含了与Hibernate 5相关的jar包,这些jar包是构建和运行基于Hibernate的应用程序所必需的。下面我们将详细探讨Hibernate ORM框架及其相关组件。 1. Hibernate核心库:`hibernate-core.jar` Hibernate的...
### 关于《Beginning Hibernate: For Hibernate 5》的知识点总结 #### Hibernate 5 概述 - **定义**: Hibernate 是一款流行的开源对象关系映射(ORM)框架,它简化了数据库与 Java 对象之间的交互过程。 - **版本**...
整合Spring MVC、Spring 5.x和Hibernate 5.x,我们可以构建一个强大的后端系统。首先,我们需要在Spring配置中声明Hibernate的DataSource和SessionFactory,然后通过Spring的JdbcTemplate或Hibernate的Session接口...
北京动力节点教育培训公司提供的Hibernate5讲义,不仅对Hibernate框架进行了全面的介绍,而且通过实例演示了如何使用Hibernate进行基本的数据库操作。该讲义涵盖了Hibernate的基本技术、配置方法以及如何开发一个...
**标题**: Hibernate5所需JAR包集合 **正文**: Hibernate是Java开发中广泛使用的对象关系映射(ORM)框架,它允许开发者以面向对象的方式处理数据库操作,从而减轻了传统SQL编程的负担。在使用Hibernate 5进行项目...
标题"hibernate5所需jar包"指的是在进行Hibernate 5开发时所需的Java档案(JAR)文件集合。这些JAR文件是Hibernate框架的组成部分,它们包含了运行和使用Hibernate来实现对象关系映射(ORM)功能所必需的类库和资源...
《Hibernate5实例程序》是一份专为学习Hibernate5框架所编写的代码实例集。Hibernate作为Java领域中的一款主流对象关系映射(ORM)工具,极大地简化了数据库操作,使得开发者能够更加专注于业务逻辑,而非底层的SQL...
Hibernate 5 是一个开源的对象关系映射(ORM)框架,它允许Java开发人员在数据库上操作对象,而无需编写大量的SQL代码。这个“hibernate5类包”包含了Hibernate 5.2.11.Final版本的所有核心组件和其他相关模块,使得...
在实际项目中,这个压缩包"spring4.2+hibernate5"包含了所有开发所需的基础库,包括Spring核心模块、Spring MVC、Spring ORM(与Hibernate集成)以及Hibernate本身,还有可能包含一些依赖的JDBC驱动和其他辅助库。...
struts2+hibernate5+MySQL 本项目只是简单模拟教务管理系统的基本功能,通过熟悉的教务管理系统开发来综合训练Struts2和 Hibernate5框架技术的整合应用,并进一步提高项目实践能力。 项目实现的功能包括学生管理部分,...
在现代Java开发中,Maven和Hibernate5是两个不可或缺的工具。Maven是一个项目管理和集成工具,它简化了构建、依赖管理和项目的标准化过程。而Hibernate5则是一个强大的对象关系映射(ORM)框架,它允许开发者用Java...
【Hibernate5教程文档大纲】 本教程详尽地涵盖了Hibernate5框架的各个方面,旨在帮助开发者深入理解和熟练使用这一强大的ORM(对象关系映射)工具。ORM技术的核心思想是将Java对象模型与关系数据库模型进行映射,...
【hibernate5最新版jar包下载(全)】 Hibernate是一个强大的对象关系映射(ORM)框架,它为Java开发者提供了便捷的数据持久化方案。在Java应用开发中,特别是企业级应用,Hibernate作为数据库访问层,能够极大地简化...
一共14个Hibernate5所需jar包,下载后解压,再导入到项目中即可使用,亲测可用,方便java开发者进行数据库的操作,更多关于Hibernate开发的细节可移步至我的技术博客:...
5. **Criteria查询**:除了传统的HQL(Hibernate Query Language)查询,Hibernate 5还提供了Criteria API,这是一种类型安全的查询方式,可以根据对象属性动态构建查询条件。 6. **二级缓存**:Hibernate支持二级...
本压缩包“Hibernate5的Jar包整合.rar”提供了整合Hibernate5所需的一系列库文件,包括日志处理、数据库驱动以及Servlet相关的依赖。以下是对这些文件和相关知识点的详细说明: 1. **Hibernate5**: Hibernate 5是...
SSH整合指的是将Spring、Struts2和Hibernate5这三大开源框架进行集成,以构建高效、模块化的Java Web应用程序。在本教程中,我们将探讨如何将Hibernate5与Spring框架结合使用,实现数据持久化功能。 首先,...
hibernate5-needed-jars.rar jandex-2.0.0.Final.jar javassist-3.18.1-GA.jar jboss-logging-3.3.0.Final.jar log4j-1.2.16.jar mysql-connector-java-5.0.4-bin.jar slf4j-api-1.6.1.jar slf4j-log4j12-...