Hibernate基础介绍 + 环境搭建的目录
项目工程地址
https://yxmiaoyu.lanzous.com/b01c67olc 密码:74k5https://yxmiaoyu.lanzous.com/b01c67olc
密码:74k5
基础介绍
三层体系结构
软件体系结构就是对软件进行分层。
分层体系结构
指的是将系统的组件分隔到不同的层中,每一层中的组件应保持内聚性; 每一层都应与它下面的各层保持松散耦合。
- 原则就是高内聚低耦合
内聚性:类内部高度相关
松散耦合:层之间关联不能太密切,过分依赖的话不便于修改
持久层
为了把数据访问细节和业务逻辑分开,可以把数据访问作为单独的持久化层。
持久化
瞬时状态:保存在内存的程序数据,程序退出后,数据就消失了,称为瞬时状态。
持久状态:保存在数据库(磁盘)的程序数据,程序退出后,数据依然存在,称为程序数据的持久状态。
持久化:将程序数据在瞬时状态和持久化状态之间转换的机制。
狭义的理解: “持久化”指把内存中的对象存储到关系型数据库
广义的理解: “持久化” 包括和数据库相关的各种操作,保存、更新、删除、加载、查询
持久化层: 持久化层封装了数据访问细节,为业务逻辑层提供面向对象的API,
使业务逻辑层可以专注于实现业务逻辑
MVC设计模式与四层结构的对应关系
持久化层的设计目标:
- 代码可重用性高,能够完成对象持久化操作;
- 如果需要的话,能够支持多种数据库平台;
- 具有相对独立性,当持久层发生变化时,不会影响上层实现。
软件的模型
分析阶段,创建概念模型
设计阶段,创建域模型与数据模型
概念模型
- 概念模型用来模拟问题域中的真实实体。
- 概念模型描述了每个实体的概念和属性,以及实体之间的关系。(有什么实体,属性及其之间的关系)
- 概念模型并不描述实体的行为。
关系数据模型
关系数据模型是在概念模型的基础上建立起来的,用于描述这些关系数据的静态结构,它由以下内容组成:
- 一个或多个表;
- 表与表之间的参照完整性; (外键)
- 表的所有索引;
- 触发器;
- 视图。
域模型
域模型是面向对象的,在面向对象术语中,域模型也可称为设计模型。
域模型由以下内容组成:
- 具有状态和行为的域对象;
- 域对象之间的关系。
域对象
域对象可以代表业务领域中的人、地点、事物或概念等。域对象分为以下几种:
- 实体域对象:业务领域的名词;
- 过程域对象:业务领域的动词;
- 事件域对象:业务领域中的事件。
域模型与关系模型之间存在许多不匹配之处
- 域模型中有继承关系,关系模型不能直接表示继承关系。
- 域模型中有多对多关联关系,关系模型通过连接表来表示多对多关联关系。
- 域模型中有双向关联关系,关系模型只有单向参照关系,而且总是many方参照one方。
- 域模型提倡精粒度模型,而关系模型提倡粗粒度模型。
对象-关系映射 - ORM
对象-关系映射(Object Relational Mapping,简称ORM),是随着面向对象的软件开发方法发展而产生的。用来把域模型表示的对象映射到关系数据模型对应的数据库结构中去。
通过ORM模式在操作实体对象的时候,就不需要再去和复杂的 SQL语句打交道,只需简单的操作实体对象的属性和方法,ORM 技术是在对象和关系之间提供了一条桥梁,对象型数据和数据库中的关系型的数据通过这个桥梁来相互转化。
拓展知识
为了使程序中的业务逻辑和数据访问细节分离,在Java领域出现了好几种现成的模式。
主动域模式,JDO模式,CMP模式,ORM模式等。
ORM模式指的是在单个组件中负责所有实体域对象的持久化,封装数据访问细节。只要配置了持久化类和表的映射关系,ORM中间件在运行时就能参照映射文件的信息,把域对象持久化到数据库中。
ORM提供了实现持久化层的另外一种模式。它采用映射元数据描述对象-关系的映射细节,是的ORM中间件能够在任何一个Java应用的业务逻辑层和数据库之间充当桥梁。ORM解决的主要问题就是对象-关系映射。域模型是面向对象的,而关系模型是面向关系的,一般情况下,一个持久化类和一个表对应,类的每个实例对应表中的一条记录。下表列举了面向对象概念和面向关系概念之间的基本映射。
JDBC繁琐,修改麻烦,代码赘余,重复量大。
Hibernate
Hibernate在分层体系结构中Hibernate位于持久层,是完成对象持久化的持久层框架;
Hibernate是连接Java应用程序和关系型数据库的框架,能够建立对象模型和关系数据模型之间的映射,是一种自动ORM框架;
Hibernate是对JDBC API的封装,是JDBC轻量级封装框架。
Java中操作数据库只有JDBC
Hibernate能带给我们什么?
-
Hibernate实现了ORM,使Java程序员可以方便的运用面向对象的编程思想来操纵关系型数据库;
-
Hibernate是对JDBC的封装,增强了代码的重用性,简化了代码,提高了编程效率;
-
Hibernate是对JDBC的轻量级封装,必要时Java程序员可以绕过Hibernate直接访问JDBC API;
-
Hibernate不仅可以应用在独立的Java程序中,还可以应用在Java Web项目中,可以和多种Web服务器集成,并支持多种数据库平台。