`
persistC
  • 浏览: 73130 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

hibernate 五

阅读更多
多对多的映射实现

一般多对多关联会拆分成两个一对多的关系来实现多对多关系,也可以通过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>
============================================================================
分享到:
评论

相关推荐

    hibernate5相关jar包

    本压缩包包含了与Hibernate 5相关的jar包,这些jar包是构建和运行基于Hibernate的应用程序所必需的。下面我们将详细探讨Hibernate ORM框架及其相关组件。 1. Hibernate核心库:`hibernate-core.jar` Hibernate的...

    springmvc, spring5.x , hibernate5.x 整合

    整合Spring MVC、Spring 5.x和Hibernate 5.x,我们可以构建一个强大的后端系统。首先,我们需要在Spring配置中声明Hibernate的DataSource和SessionFactory,然后通过Spring的JdbcTemplate或Hibernate的Session接口...

    Hibernate Hibernate5 讲义 PDF

    北京动力节点教育培训公司提供的Hibernate5讲义,不仅对Hibernate框架进行了全面的介绍,而且通过实例演示了如何使用Hibernate进行基本的数据库操作。该讲义涵盖了Hibernate的基本技术、配置方法以及如何开发一个...

    Hibernate5需要的jar包。

    **标题**: Hibernate5所需JAR包集合 **正文**: Hibernate是Java开发中广泛使用的对象关系映射(ORM)框架,它允许开发者以面向对象的方式处理数据库操作,从而减轻了传统SQL编程的负担。在使用Hibernate 5进行项目...

    hibernate5所需jar包

    标题"hibernate5所需jar包"指的是在进行Hibernate 5开发时所需的Java档案(JAR)文件集合。这些JAR文件是Hibernate框架的组成部分,它们包含了运行和使用Hibernate来实现对象关系映射(ORM)功能所必需的类库和资源...

    Hibernate5实例程序

    《Hibernate5实例程序》是一份专为学习Hibernate5框架所编写的代码实例集。Hibernate作为Java领域中的一款主流对象关系映射(ORM)工具,极大地简化了数据库操作,使得开发者能够更加专注于业务逻辑,而非底层的SQL...

    hibernate5类包

    Hibernate 5 是一个开源的对象关系映射(ORM)框架,它允许Java开发人员在数据库上操作对象,而无需编写大量的SQL代码。这个“hibernate5类包”包含了Hibernate 5.2.11.Final版本的所有核心组件和其他相关模块,使得...

    spring4.2+hibernate5环境开发全部jar包

    在实际项目中,这个压缩包"spring4.2+hibernate5"包含了所有开发所需的基础库,包括Spring核心模块、Spring MVC、Spring ORM(与Hibernate集成)以及Hibernate本身,还有可能包含一些依赖的JDBC驱动和其他辅助库。...

    基于Struts2+Hibernate5的教务管理系统项目实训

    struts2+hibernate5+MySQL 本项目只是简单模拟教务管理系统的基本功能,通过熟悉的教务管理系统开发来综合训练Struts2和 Hibernate5框架技术的整合应用,并进一步提高项目实践能力。 项目实现的功能包括学生管理部分,...

    使用Maven配置Hibernate5

    在现代Java开发中,Maven和Hibernate5是两个不可或缺的工具。Maven是一个项目管理和集成工具,它简化了构建、依赖管理和项目的标准化过程。而Hibernate5则是一个强大的对象关系映射(ORM)框架,它允许开发者用Java...

    hibernate5最新版jar包下载(全)

    【hibernate5最新版jar包下载(全)】 Hibernate是一个强大的对象关系映射(ORM)框架,它为Java开发者提供了便捷的数据持久化方案。在Java应用开发中,特别是企业级应用,Hibernate作为数据库访问层,能够极大地简化...

    ssh框架中的hibernate5

    5. **Criteria查询**:除了传统的HQL(Hibernate Query Language)查询,Hibernate 5还提供了Criteria API,这是一种类型安全的查询方式,可以根据对象属性动态构建查询条件。 6. **二级缓存**:Hibernate支持二级...

    Hibernate5所需jar包

    一共14个Hibernate5所需jar包,下载后解压,再导入到项目中即可使用,亲测可用,方便java开发者进行数据库的操作,更多关于Hibernate开发的细节可移步至我的技术博客:...

    Hibernate5的Jar包整合.rar

    本压缩包“Hibernate5的Jar包整合.rar”提供了整合Hibernate5所需的一系列库文件,包括日志处理、数据库驱动以及Servlet相关的依赖。以下是对这些文件和相关知识点的详细说明: 1. **Hibernate5**: Hibernate 5是...

    Hibernate5教程文档大纲

    【Hibernate5教程文档大纲】 本教程详尽地涵盖了Hibernate5框架的各个方面,旨在帮助开发者深入理解和熟练使用这一强大的ORM(对象关系映射)工具。ORM技术的核心思想是将Java对象模型与关系数据库模型进行映射,...

    hibernate5需要的相关jar包

    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-...

    hibernate5官方文档,HTML+PDF

    在Hibernate 5的官方文档中,你会了解到以下几个关键知识点: 1. **ORM概念**:ORM是一种技术,它在对象和关系数据库之间建立桥梁,简化了数据库操作。Hibernate作为ORM框架,通过映射Java类到数据库表,实现了对象...

    hibernate5

    Hibernate5是一个强大的Java持久化框架,它为Java开发者提供了便捷的方式来操作数据库,使得开发者无需直接编写SQL语句,而是通过对象关系映射(ORM)技术将Java类与数据库表进行映射,以此实现数据的存取。...

Global site tag (gtag.js) - Google Analytics