1. 什么是 ORM 框架
ORM(Object-Relational Mapping) 是一种技术思想,用来 把面向对象的编程语言与关系型数据库的表结构进行映射。
简单来说:
-
数据库表 → 类
-
表中的字段 → 类的属性
-
表中的行 → 对象实例
ORM 框架就是实现这种映射的工具,它可以让开发者 不用写大量 SQL,而是通过操作对象来完成数据库的增删改查。
2. 为什么需要 ORM
在传统开发中,操作数据库通常是这样:
// JDBC 方式
Connection conn = DriverManager.getConnection(...);
PreparedStatement ps = conn.prepareStatement("SELECT * FROM user WHERE id=?");
ps.setInt(1, 1);
ResultSet rs = ps.executeQuery();
问题:
-
SQL 与代码耦合严重,一改字段名要改多处。
-
重复代码多,每次查询都要写
Connection / Statement / ResultSet。 -
数据类型映射麻烦,数据库类型(VARCHAR, INT)和 Java 类型(String, int)需要手动转换。
👉 ORM 框架的作用:
-
简化数据库操作,提升开发效率。
-
避免大量样板代码(boilerplate)。
-
提供更清晰的领域模型(domain model)。
3. 常见的 ORM 框架
在不同语言中,ORM 框架有很多:
Java 生态
-
Hibernate
最经典的 ORM 框架,功能强大,支持 HQL、缓存、复杂映射。 -
MyBatis
半自动 ORM,需要写 SQL,但比 JDBC 简单很多,灵活性强。 -
MyBatis-Plus
在 MyBatis 基础上增强,提供了大量自动化 CRUD。 -
JPA / Spring Data JPA
标准化的 ORM,常见实现是 Hibernate。
JavaScript / Node.js
-
Sequelize (适合 MySQL, PostgreSQL 等)
-
TypeORM (支持装饰器,和 TS 很配)
-
Prisma (现代化 ORM,类型安全)
Python
-
SQLAlchemy (功能全面)
-
Django ORM (框架内置,和 Django 集成度高)
PHP
-
Doctrine (Symfony 常用)
-
Eloquent ORM (Laravel 内置)
4. ORM 的优点
✅ 开发效率高:不用手写繁琐的 SQL。
✅ 面向对象:操作对象即可,不用关心底层 SQL。
✅ 可移植性强:切换数据库时,改动更少。
✅ 维护性好:业务逻辑与数据访问分层清晰。
✅ 内置优化:如缓存、懒加载、批量查询等。
5. ORM 的缺点
❌ 性能问题:复杂 SQL 可能效率不如手写。
❌ 学习成本高:如 Hibernate 的配置和调优比较复杂。
❌ 灵活性不足:有些特定 SQL 或数据库特性,ORM 难以完全覆盖。
❌ 调试困难:自动生成的 SQL 有时难以阅读和优化。
6. ORM 的使用场景
适合:
-
业务开发中增删改查频繁,但 SQL 逻辑不复杂。
-
快速迭代的项目,开发效率比极致性能更重要。
-
团队开发,保证代码规范和一致性。
不适合:
-
需要极致性能调优的系统(如金融、游戏后端)。
-
SQL 非常复杂,需要自定义存储过程、大量优化 hint。
7. 小结
-
ORM 框架的核心作用:简化数据库访问,提升开发效率
-
Java 领域最常用:MyBatis(灵活,需写 SQL) 与 Hibernate(全自动)
-
ORM 并不是万能的:复杂 SQL 最好手写,配合 ORM 使用才是最佳实践
421



被折叠的 条评论
为什么被折叠?



