什么是ORM框架,为什么我们需要它?
什么是ORM框架
ORM,全称为"Object-Relational Mapping",即对象关系映射。它是一种程序设计技术,用于实现面向对象编程语言里的对象与关系型数据库的数据之间的映射。ORM 对象关系映射框架,可以让我们以面向对象的方式来操作数据库,而不需要编写繁琐的 SQL 语句。
为什么我们需要ORM框架
减少代码量:传统的 JDBC 开发方式,开发者需要手动编写 SQL 语句,并处理结果集的映射工作。使用 ORM 框架,开发者主要处理的是对象和对象之间的关系,无需关注 SQL 的编写以及结果集的映射,大大降低了开发量。
提高开发效率和质量:使用 ORM 框架,使得程序员可以用更少的时间完成更多的工作,同时也降低了因人为编写 SQL 语句可能出现的错误。由于 ORM 框架采用面向对象的方式来操作数据库,符合程序员的编程习惯,使得开发速度更快。
数据库无关性:ORM 框架一般都提供了方言的支持,如果要更换数据库只需要更换方言即可,无需修改大量 SQL 语句。
便于维护:由于 ORM 框架采用面向对象的方式操作数据库,使得代码更易于理解和维护。
支持事务:ORM 框架通常也提供了对数据库事务的支持。
能够利用对象继承、关联等特性:由于 ORM 的方式是面向对象的,因此它可以使用 OOP 的一些特性如:继承、多态和关联等。
Hibernate
Hibernate概览
Hibernate是一个开源的对象关系映射(ORM)框架,它对JDBC进行了非常轻量级的封装,使得Java开发人员可以使用面向对象的思维进行开发,大大提高了开发效率。Hibernate通过使用 Java 中的类和对象来代表数据库中的表和记录,这样开发者可以直接操作对象来进行数据库操作,无需编写繁琐的 SQL 语句。
Hibernate的功能特性
- 全自动映射:Hibernate能够全自动执行SQL,并将结果集映射为对象,开发者可以直接操作对象,而不必关心如何生成和执行SQL。
- 数据库无关性:Hibernate对于数据库的具体实现情况是抽象的,开发者无需修改代码就能从一种数据库迁移到另一种数据库,只需要改变方言即可。
- 缓存机制:Hibernate具有一级缓存和二级缓存机制,有效的提高了数据查询效率,减少了对数据库的访问次数。
- 延迟加载:Hibernate具有延迟加载的特性,当需要使用数据时,才将数据从数据库中取出,避免了不必要的数据库访问。
Hibernate的优缺点
优点:
- 丰富的映射关系:Hibernate支持各种复杂的映射关系,如一对一、一对多、多对一、多对多等。
- 自动表生成:Hibernate能够根据对象的定义自动生成对应的数据库表。
- 跨数据库平台:Hibernate支持几乎所有主流的关系数据库系统。
- 集成方便:Hibernate可以轻松的与Struts、Spring等框架集成。
缺点:
- 性能开销:因为Hibernate多了一层ORM映射,因此相对于原生的JDBC来说,性能会有一些开销。
- 复杂查询困难:虽然HQL(Hibernate Query Language)具有强大的查询能力,但在一些复杂的查询场景仍然可能会遇到困难。
- 学习成本较高:Hibernate提供了高度抽象的解决方案,因而在理解和使用时需要相应的理论基础,并需要熟练掌握操作。
MyBatis
MyBatis 概览
MyBatis 是一个支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程。与 JDBC 相比,MyBatis 可以使用简单的 XML 或注释进行配置和原始映射,将接口和 Java 的 POJOs(Plain Ordinary Java Object)映射成数据库中的记录。
MyBatis 的功能特性
灵活性:MyBatis 并不包装 SQL,不做任何的 SQL 解析和生成工作,它只是负责将编写的 SQL 发送到数据库,并将结果映射到指定的对象。这保留了 SQL 本