ORM框架 (对象关系映射)
【解释:本文默认编程语言:Java】
1. 什么是“持久化”?
答:
把内存中的数据保存到可永久保存的存储设备中,比如:硬盘。因为内存掉电数据丢失,而硬盘等存储介质掉电数据不丢失。
程序里,持久化的主要应用是将内存中的数据存储到数据库或者文件中。
2. 什么是“持久层”?
答:
系统中专注于实现将内存数据持久化的逻辑层面,将数据使用者和数据实体相关联。也就是架构中最常见的dao层或者叫mapper层。这里的架构指的是下面8.1的三层架构
3. 什么是“ORM”?
答:
ORM:对象关系映射,是Object Relational Mapping的简称
用于实现面向对象编程语言里不同类型系统的数据之间的转换,常见于Java的实体类数据与数据库数据之间的转换。
是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。
4. 什么是“ORM框架”?
答:
ORM框架: 是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。我们在具体的操作数据库的时候,就不需要再去和复杂的SQL语句打交道,只要像平时操作对象一样操作它就可以了 。简单理解为一种框架的格式。
基础的ORM:JDBC
常见的ORM框架有五种:
- Mybatis 常见于SSM框架
- Hibernate 常见于SSH框架
- iBatis Mybatis前身,但是目前多用Mybatis,原因:请看下面的7
- EclipseLink Eclipse持久化平台项目
- JFinal 缺乏灵活性和稳定性
5. ORM框架的不足之处:
- 持久化层缺乏弹性。一旦出现业务需求的变更,就有极大的可能要增加或修改持久化层的接口和实现
- 持久化层同时与域模型(即pojo实体类)和数据库模型(数据库表)绑定,但凡域模型或者数据库模型发生变更,那么都要修改持久化层的相关代码,增加软件维护难度。
6. ORM的方法论基于三个核心原则
- 简单: 以最基本的形式建模数据。
- 传达性: 数据库结构被任何人都能理解的语言文档化。
- 精确性: 基于数据模型创建正确标准化了的结构。
7. iBatis和Mybatis区别
参考文章:Mybatis与ibatis比较
- Mybatis实现了接口绑定,使用更加方便
- 对象关系映射的改进,效率更高
- MyBatis采用功能强大的基于
OGNL
的表达式来消除其他元素
8. 三层架构和MVC模式
8.1 三层架构
JAVA EE推荐的典型的架构模式,分为:表示层(web层
)、业务逻辑层(service层
)、数据访问层(dao层
,即持久层)。
- web层: 与客户端交互,包括获取用户请求、传递数据、封装数据、展示数据
- service层: 复杂的业务处理,包括各种实际的逻辑运算
- dao层: 与数据库进行交互,与数据库相关的代码在此处实现
8.2 MVC模式
MVC模式 是Model
、View
、Controller
的缩写。MVC模式是表现模式,是为了将展示层(HTML)与业务逻辑分开,使得代码清晰。
- Model: 模型,代表业务逻辑层代码与数据库代码
- Controller: 控制层,用来拦截请求、转发请求、返回数据、返回页面 (告诉模型要处理什么、告诉视图要展示什么)
- View: 视图,用来展示给使用者看的页面 (对数据进行展示)
8.3 区别和联系
三层架构和MVC模式之间没有直接关联,因为三层架构是开发架构模式,为了方便每个人开发自己擅长的领域;MVC模式是表现模式,是为了将前端代码和业务逻辑分开,是代码清晰。
如果非要联系,那么三层架构下的web层继续细分,刚好符合MVC的设计模式。