1. ORM框架
1.1 简介
对象关系映射(Object Relational Mapping,简称ORM)
广义上,ORM指的是面向对象的对象模型和关系型数据库的数据结构之间的相互转换。狭义上,ORM可以被认为是基于关系型数据库的数据存储,实现一个虚拟的面向对象的数据访问接口。理想情况下,基于这样一个面向对象的接口,持久化一个对象应该不需要了解任何关系型数据库存储数据的实现细节。ORM思想其实就是表实体和表之间的相互转化。
1.2 实际操作
- 把表实体的变化转化到数据库里面。
- 把表数据转成表实体。
当你开发一个应用程序的时候,可能会写不少数据访问层的代码,用来从数据库保存、删除、读取对象信息等。你在DAL中写了很多的方法来读取对象数据,改变状态对象等。
ORM解决的主要的问题是对象关系的映射。域模型和关系模型分别是建立在概念模型的基础上。域模型是面向对象的,而关系模型是面向关系的。一般情况下,一个持久化类和一个表对应,类的每个实例对应表中的一条记录,类的每个属性对应表的每个字段。
1.3 ORM优缺点
优点:
- 提高开发效率,降低开发成本
- 使开发更加对象化
- 可移植
- 可以很方便的引入数据缓存之类的附加功能
缺点:
- 自动化进行关系数据库的映射需要消耗系统性能
- 在处理多表联查、where条件复杂之类的查询时,ORM的语法会变得很复杂
1.4 数据持久化
ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。
- 持久化层缺乏弹性。一旦出现业务需求的变更,就必须修改持久化层的接口
- 持久化层同时与域模型与关系数据库模型绑定,不管域模型还是关系数据库模型发生变化,都要修改持久化层的相关程序代码,增加了软件的维护难度
数据持久化的好处:
- 松散耦合,程序代码重用性强,使持久化不依赖于底层数据库和上层业务逻辑实现,更换数据库时只需要修改配置文件而不用修改代码
- 业务逻辑代码可读性强,在代码中不会有大量的SQL语句,提高程序的可读性
- 持久化技术可以自动优化,减少对数据库的访问量,提高程序运行效率
数据持久化对象的基本操作有:保存、更新、删除、查询等。
2. 常用框架
- Hibernate:Hibernate是Java领域最流行的ORM框架之一。它提供了全面的对象持久化解决方案,支持多种数据库,并且具有强大的查询语言(HQL)和标准化的CRUD操作。
- Django ORM:Django ORM是Python Web框架Django自带的ORM框架。它简化了与数据库的交互,提供了丰富的功能,如模型定义、数据库迁移和复杂查询等。
- SQLAlchemy:SQLAlchemy是一个功能强大且灵活的Python ORM框架,支持多种数据库后端。它提供了两种核心模式:ORM模式和原生SQL模式,使开发者可以根据需要选择适合的方式。
- Entity Framework:Entity Framework是Microsoft .NET平台上的ORM框架,用于与关系数据库进行交互。它支持多种数据库引擎,并提供了LINQ(Language Integrated Query)语法进行数据访问。
- Sequelize:Sequelize是一个基于Node.js的ORM框架,可以与多种关系型数据库配合使用。它提供了良好的异步支持和事务管理,并且支持多表关联、模型验证和迁移等功能。
心得体会(总结)
- 简化数据库操作:ORM框架可以将数据库表映射为对象,使开发者可以使用面向对象的方式进行数据库操作,而不需要直接编写SQL语句。这大大简化了数据库操作的复杂性,提高了开发效率。
- 提高代码可读性和维护性:通过使用ORM框架,数据库操作的代码变得更加清晰、易读,并且遵循了一定的设计模式和规范。这样可以提高代码的可维护性,使其他开发者更容易理解和修改代码。
- 跨数据库的兼容性:ORM框架通常支持多种数据库后端,因此可以轻松地切换数据库,而无需修改大部分代码。这对于项目的可扩展性和迁移性非常有帮助。
- 提供了查询和过滤机制:ORM框架通常提供了强大的查询和过滤机制,可以使用高级的查询语言或方法链来执行复杂的数据库查询操作。这使得数据检索变得非常方便,并且可以优化查询性能。