![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Hibernate框架
文章平均质量分 92
李阿昀
昀,三尺微命,一介书生。只当穷且益坚,不坠青云之志!
展开
-
Hibernate框架基础——cascade属性
我们以部门和员工的关系为例讲解一对多关联关系映射时,删除部门时,如果部门有关联的员工且inverse属性为false,那么由于可以维护关联关系,它就会先把关联的员工的外键列设为null值,再删除自己。但是此刻希望删除部门时,就附带着把该部门下的所有员工都删掉,这时就需要引入cascade属性了。级联(cascade)当Hibernate持久化一个临时对象时,在默认情况下,它不会自动持久化所关联的其他原创 2016-10-08 19:47:21 · 30540 阅读 · 6 评论 -
Hibernate入门第九讲——数据库中表与表之间的关系
Hibernate关联映射——对象的三种关系Hibernate框架基于ORM设计思想,它将关系型数据库中的表与我们java中的类进行映射,一个对象就对应着表中的一条记录,而表中的字段对应着类中的属性。数据库中表与表之间存在着三种关系,也就是系统设计中的三种实体关系。下面进行简单阐述。一对一创建表的原则有两种:唯一外键对应 在任意一方添加一个外键来描述对应关系。如下图所示: 或者 主键对应原创 2017-04-12 22:53:23 · 5854 阅读 · 0 评论 -
Hibernate入门第十讲——Hibernate的一对多关联映射
Hibernate关联映射——一对多(多对一)我们以客户(Customer)与订单(Order)为例来讲解Hibernate关联映射中的一对多关联关系。 首先肯定是搭建好Hibernate的开发环境,我在此也不过多赘述,读者自行实践。接着在src目录下创建一个cn.itheima.oneToMany包,并在该包下创建两个实体类,如下:客户类// 客户 ---- 一的一方public class原创 2017-04-13 02:36:59 · 12334 阅读 · 6 评论 -
Hibernate注解开发
Hibernate注解开发在Hibernate中我们一般都会使用注解,这样可以帮助我们大大简化hbm映射文件的配置。下面我就来为大家详细介绍。PO类注解配置首先肯定是搭建好Hibernate的开发环境啦,我在此也不过多赘述,读者自行实践。接着在src目录下创建一个cn.itheima.domain包,并在该包下创建一个Book实体类,由于Book实体类中写有注解配置,所以就不用编写那个映射配置文件啦原创 2017-04-13 21:25:33 · 5757 阅读 · 6 评论 -
Hibernate注解开发
Hibernate注解开发在Hibernate中我们一般都会使用注解,这样可以帮助我们大大简化hbm映射文件的配置。下面我就来为大家详细介绍。PO类注解配置首先肯定是搭建好Hibernate的开发环境啦,我在此也不过多赘述,读者自行实践。接着在src目录下创建一个cn.itheima.domain包,并在该包下创建一个Book实体类,由于Book实体类中写有注解配置,所以就不用编写那个映射配置文件啦原创 2017-04-13 21:26:47 · 1581 阅读 · 0 评论 -
Hibernate入门第十二讲——Hibernate的检索方式
Hibernate检索方式概述我们在对数据库的操作中,最常用的是select,那么使用Hibernate如何进行select操作呢?本文就来徐徐道来。 Hibernate检索方式可分为5种:导航对象图检索方式,根据已加载的对象导航到其它对象。OID检索方式,按照对象的OID来检索对象。HQL检索方式,使用面向对象的HQL查询语言。QBC检索方式,使用QBC(Query by Criteri原创 2017-04-23 22:46:24 · 4035 阅读 · 2 评论 -
Hibernate入门第十三讲——Hibernate中的多表查询
Hibernate中的多表操作在实际开发中,我们不可能只是简简单单地去操作单表,绝大部分都是要对多表进行操作的。所以本文就来讲述Hibernate中的多表操作,讲之前,先复习一下使用SQL语句是如何进行多表操作的。提示:本文所有案例代码的编写都是建立在前文Hibernate检索方式概述的案例基础之上的!!!SQL多表操作SQL多表操作可分为如下几类:交叉连接(CROSS JOIN) 交叉连接其实原创 2017-04-23 23:07:46 · 4040 阅读 · 0 评论 -
Hibernate入门第七讲——Hibernate中的事务管理
事务介绍什么是事务?事务就是逻辑上的一组操作,组成这组操作的各个单元要么全部成功,要么全都失败。事务的四个特性原子性:不可分割的一个整体。一致性:事务在执行前后,要保证数据的一致。隔离性:一个事务在执行的过程中,不应该受到其它事务的干扰。持久性:事务一旦结束,数据就持久化到数据库中。不考虑事务的隔离性,会产生什么问题?不考虑事务的隔离性,会产生如下问题:脏读:一个事务读取到另一个事务的未原创 2017-04-24 18:55:12 · 2476 阅读 · 0 评论 -
Hibernate入门第十四讲——Hibernate的优化方案与抓取策略
HQL优化使用参数绑定 使用绑定参数的原因是让数据库一次解析SQL,对后续的重复请求可以使用生成好的执行计划,这样做节省CPU时间和内存。避免SQL注入。尽量少使用NOT 如果where子句中包含not关键字,那么执行时该字段的索引失效。尽量使用where来替换having having在检索出所有记录后才对结果集进行过滤,这个处理需要一定的开销,而where子句限制记录的数目,能减少原创 2017-04-25 23:44:06 · 10306 阅读 · 5 评论 -
Hibernate入门第二讲——XML文件提示的配置
不知大家有没在编写Hibernate核心配置文件和映射配置文件时,遇到这样一个问题:如果你遇到了这样子的问题,说明你还没有配置XML文件的提示。你不仅就要问,如何配置XML文件的提示呢?这也是要分情况的,因为Hibernate核心配置文件和映射配置文件的提示我们都是要配置的。配置Hibernate核心配置文件的提示打开hibernate.cfg.xml文件,复制如下内容:依次点击Win...原创 2019-08-04 16:13:38 · 3164 阅读 · 0 评论 -
Hibernate入门第四讲——Hibernate的核心API
百度Hibernate,可在度娘上看到如下文字:还记得上一篇文章讲的是《Hibernate入门第三讲——Hibernate的常见配置》,本文继续在其基础之上讲解Hibernate的核心API。Configuration:Hibernate的配置对象从度娘上我们可以看到Configuration的定义:从以上文章中,我们可以知道Configuration类主要是用于加载Hibernate...原创 2019-08-05 09:59:30 · 3039 阅读 · 3 评论 -
Hibernate入门第十一讲——Hibernate的多对多关联映射
在上一讲中,已经讲解过Hibernate中的一对多关联映射了,现在在其基础上,我们来讲解一下Hibernate中的多对多关联映射。环境搭建创建表这里我们以用户(User)与角色(Role)为例来讲解Hibernate关联映射中的多对多关联关系,因此我们要在数据库下新建三张表——用户表、角色表以及中间表,这里笔者使用的数据库是MySQL。CREATE TABLE `sys_user` ( ...原创 2019-08-08 09:57:09 · 1184 阅读 · 0 评论 -
Hibernate入门第六讲——持久化类的三种状态与Hibernate的一级缓存
持久化类首先,开宗明义,再一次提醒大家,持久化类=Java类+映射配置文件。持久化类的三种状态Hibernate是一个持久层框架,它通过持久化类来完成ORM基本操作。Hibernate为了更好的管理持久化类,于是它就将持久化类分成了三种状态。下面我会对每一个状态分别加以阐述。瞬时态瞬时态也叫做临时态或自由态,它一般指我们new出来的对象,它不存在OID,且与Hibernate Ses...原创 2019-08-06 16:50:44 · 1642 阅读 · 2 评论 -
Hibernate的一级缓存
Hibernate的一级缓存Hibernate的一级缓存就是指Session缓存。通过查看Session接口的实现类——SessionImpl.java的源码可发现有如下两个类: actionQueue它是一个行动队列,它主要记录crud操作的相关信息。persistenceContext它是持久化上下文,它其实才是真正的缓存。在Session中定义了一系列的集合来存储数据,它们构成了Sessi原创 2017-04-12 22:47:58 · 7881 阅读 · 1 评论 -
Hibernate入门第五讲——Hibernate持久化类与主键生成策略
Hibernate持久化类什么是持久化类呢?在Hibernate中持久化类的英文名称是Persistent Object(简称PO),PO=POJO+hbm映射配置文件。 对于Hibernate中的PO,有如下编写规则:必须提供一个无参数的public构造方法。所有属性要用private修饰,对外提供public的get/set方法。在PO类必须提供一个标识属性,让它与数据库中的主键对应,我原创 2017-03-23 23:02:27 · 5072 阅读 · 3 评论 -
Hibernate框架基础——在Hibernate中java对象的状态
在Hibernate中java对象的状态Hibernate把对象分为4种状态:临时状态持久化状态游离状态删除状态Session的特定方法能使对象从一个状态转换到另一个状态。临时对象(transient)在使用代理主键的情况下,OID通常为null。不处于Session的缓存中。 Session里面是有一个集合的,这个集合我们称为Session的缓存,叫做一级缓存,它会引用Sessio原创 2016-10-08 21:11:35 · 1045 阅读 · 0 评论 -
Hibernate框架基础——操纵持久化对象的方法(Session中)
上一篇文章中我们学习了Hibernate中java对象的状态以及对象的状态之间如何转换。本文我们将详细讲解Session中的方法。save()Session的save()方法使一个临时对象转变为持久化对象。 Session的save()方法完成以下操作:把新new的对象加入到Session缓存中,使它进入持久化状态。选用映射文件指定的标识符生成器,为持久化对象分配唯一的OID。在使用代理主键的原创 2016-10-08 22:03:04 · 2910 阅读 · 0 评论 -
Hibernate框架基础——Java对象持久化概述
Java对象持久化概述应用程序的分层体系结构基于B/S的典型三层架构 说明:展现层:提供与用户交互的界面。业务逻辑层:实现各种业务逻辑。数据访问层:负责存放和管理应用程序的持久化业务数据。更详细的三层架构如下图所示: 软件的层必须具备如下特征:每个层由一组相关的类或组件构成,共同完成特定的功能。层与层之间存在自上而下的依赖关系,即上层组件访问下层组件的 API,而下层组件不应该依原创 2016-10-04 10:59:59 · 2296 阅读 · 0 评论 -
Eclipse在线配置Hibernate Tools
查看Eclipse版本Eclipse针对程序开发有很多发行版本,除了开发语言的不同,版本号对安装Hibernate Tools也有影响。如何查看Eclipse的版本号呢? 打开Eclipse→Help→About Eclipse,如图所示即为版本号,下载时需要与此版本号对应。 配置Hibernate Tools同样选择Eclipse→Help,这里选择”Install New Software…原创 2016-10-04 12:41:47 · 6246 阅读 · 2 评论 -
Hibernate框架基础——Hibernate入门
Hibernate入门Hibernate介绍Hibernate是一个基于jdbc的开源的持久化框架,是一个优秀的ORM实现,它很大程度的简化了dao层编码工作。Hibernate对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。 在分层结构中处于持久化层,封装对数据库的访问细节,使业务逻辑层更专注于实现业务逻辑。 Hibernate的主页为:http://www.hibe原创 2016-10-04 12:01:58 · 57383 阅读 · 10 评论 -
Hibernate框架基础——Hibernate API及Hibernate主配置文件
Hibernate的学习路线图Hibernate API简介ConfigurationConfiguration类负责管理Hibernate的配置信息,包括如下内容:Hibernate运行的底层信息:数据库的URL、用户名、密码、JDBC驱动类,数据库Dialect,数据库连接池等(对应hibernate.cfg.xml文件)。持久化类与数据表的映射关系(*.hbm.xml文件)。创建Conf原创 2016-10-05 16:32:24 · 5027 阅读 · 5 评论 -
Hibernate框架基础——映射普通属性
持久化对象与OID对持久化对象的要求提供一个无参的构造器。使Hibernate可以使用Constructor.newInstance()来实例化持久化类。提供一个标识属性(identifier property)。通常映射为数据库表的主键字段。如果没有该属性,一些功能将不起作用,如:Session.saveOrUpdate()。为类的持久化字段声明访问方法(get/set)。Hibernate原创 2016-10-05 18:09:14 · 3935 阅读 · 0 评论 -
Hibernate框架基础——映射主键属性
本文我们学习映射文件中的主键属性,废话不多说,直接开干。 我们首先在cn.itcast.d_hbm_id包下创建一个持久化类——User.java。public class User { private Integer id; // 如果是数字,建议使用包装类型。 private String name; public Integer getId() { re原创 2016-10-05 21:32:38 · 3499 阅读 · 0 评论 -
Hibernate框架基础——映射集合属性
集合映射集合属性大致有两种:单纯的集合属性,如像List、Set或数组等集合属性。Map结构的集合属性,每个属性值都有对应的Key映射。集合映射的元素大致有如下几种:list:用于映射List集合属性。set:用于映射Set集合属性。map:用于映射Map集合性。array:用于映射数组集合属性。bag:用于映射无序集合。idbag:用于映射无序集合,但为集合增加逻辑次序。接下来原创 2016-10-06 20:37:47 · 3529 阅读 · 0 评论 -
Hibernate框架基础——一对多关联关系映射
上一篇文章Hibernate框架基础——映射集合属性详细讲解的是值类型的集合(即集合元素是普通类型)。现在从本文开始我们就要介绍实体类型的集合(即集合元素是另一个实体)了。一对多关联关系映射我们还是以一个活生生的例子来详解一对多关联关系映射吧!就以部门和员工的关系为例。单向关联:仅仅建立从Employee到Department的多对一关联,即仅仅在Employee类中定义department属性。原创 2016-10-06 23:41:28 · 2262 阅读 · 2 评论 -
Hibernate框架基础——多对多关联关系映射
多对多关联关系映射多对多的实体关系模型也是很常见的,比如学生和课程的关系。一个学生可以选修多门课程,一个课程可以被多名学生选修。在关系型数据库中对于多对多关联关系的处理一般采用中间表的形式,将多对多的关系转化成两个一对多的关系。 为了详细介绍多对多关联关系映射,终究还是应以一个例子来说明比较印象深刻。我们以老师和学生的关系为例来说明这种多对多关联关系映射。双向多对多我们最好新建一个普通java工程原创 2016-10-08 14:47:47 · 1194 阅读 · 0 评论 -
Hibernate入门第一讲——Hibernate框架的快速入门
Hibernate框架介绍什么是Hibernate我们可以从度娘上摘抄这样有关Hibernate的介绍: Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以原创 2019-08-04 14:59:27 · 120864 阅读 · 60 评论 -
Hibernate入门第三讲——Hibernate的常见配置
在《Hibernate快速入门》一文中,我有讲到Hibernate的两个配置文件,今天就来详细地介绍这两个配置文件。Hibernate的配置详解在Hibernate中,我们使用时主要有两种配置文件:核心配置文件——hibernate.cfg.xml(主要描述Hibernate的相关配置)映射配置文件——xxx.hbm.xml核心配置文件Hibernate的核心配置文件,即hibernate.c原创 2019-08-05 08:34:30 · 17996 阅读 · 16 评论 -
Hibernate入门第八讲——Hibernate的其他API
Query你可从度娘上可看到这样的文字:我们主要通过Query完成查询操作,通过Query即可以执行HQL语句,如下:Query query = session.createQuery("HQL语句");又可以执行本地SQL语句:SQLQuery sqlQuery = session.createSQLQuery("本地SQL语句");温馨提示:SQLQuery是Query的子类...原创 2019-08-07 12:15:34 · 1323 阅读 · 6 评论