ORM

1.     ORM

1.1. 什么是ORM(Object/Relation Mapping)

对象关系映射(Object Relational Mapping,简称 ORM)是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM 是通过使用描述对象和数据库之间映射的元数据,将 java 程序中的对象自动持久化到关系数据库中。

1.2. ORM的关系图

 

1.3. ORM 的实现思想

将关系数据库中表中的记录映射成为对象,以对象的形式展现,程序员可以把对数据库

的操作转化为对对象的操作。因此 ORM 的目的是为了方便开发人员以面向对象的思想来实现对数据库的操作。

1.4. 流行的 ORM 框架

JPA Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系(只有接口规范)

Hibernate 最流行ORM框架,通过对象-关系映射配置,可以完全脱离底层SQL

MyBatis本是apache的一个开源项目iBatis,支持普通 SQL查询,存储过程和高级映射的优秀持久层框架

Apache OJB(Object Relation Bridge)对象关系桥(OJB)是一种对象关系映射工具,它能够完成从 Java 对象到关系数据库的透明存储

### ORM全称及其工作原理 ORM 的全称是 **Object-Relational Mapping**,即对象关系映射。它是一种编程技术,用于将对象模型与关系型数据库模型之间进行转换[^1]。在应用程序开发中,开发者通常会使用面向对象的语言(如 Python),而底层的数据存储则多采用关系型数据库(如 MySQL 或 PostgreSQL)。由于这两者之间的数据表示方式存在差异,因此需要一种机制来进行桥接。 #### 工作原理 ORM 的核心功能在于建立程序中的对象与其对应的数据库记录之间的映射关系。具体来说: 1. 将类映射为数据库中的表; 2. 将类的属性映射为表中的字段; 3. 将对象实例映射为表中的单条记录。 这种映射使得开发者可以像操作普通的对象一样对数据库进行增删改查操作,无需手动编写复杂的 SQL 语句。例如,在 Django 中可以通过 `filter` 方法实现查询条件过滤。 以下是 Django ORM 使用的一个简单例子: ```python from myapp.models import MyModel # 查询所有符合条件的对象 results = MyModel.objects.filter(field__condition=value) for result in results: print(result.some_field) ``` 在这个过程中,Django 自动将上述代码翻译成相应的 SQL 并执行查询。 --- ### 数据库对象关系映射的具体实现方式 为了更好地理解 ORM 的实现细节,可以从以下几个方面入手: #### 1. 类与表的关系定义 ORM 框架允许开发者通过定义类的方式描述数据库结构。例如,在 Django 中,每一个 Model 类都代表一张数据库表,其属性则对应于表中的列。下面是一个简单的示例[^4]: ```python class User(models.Model): name = models.CharField(max_length=50) age = models.IntegerField() ``` 在此基础上,ORM 框架会在后台生成并维护所需的元数据,以便将其转化为实际的数据库模式。 #### 2. 动态构建 SQL 当调用诸如 `.filter()` 这样的方法时,ORM 不会立即执行查询,而是先构建一个 QuerySet 对象。这个对象包含了所有的查询条件,并且只有在真正需要用到结果集的时候才会触发实际的 SQL 执行。 #### 3. 缓存优化 许多现代 ORM 实现还提供了缓存机制以提高性能。比如,如果多次请求相同的数据,则可以直接返回之前的结果而不是每次都重新发起数据库查询[^2]。 #### 4. 跨平台兼容性 某些高级框架(如同 ThinkPHP 提供的 DAL 层)能够屏蔽不同 RDBMS 间的语法差异,让应用更容易移植到其他类型的数据库上运行。 --- ### 总结 综上所述,ORM 是连接高层抽象世界(对象)和低级物理存储媒介(表格)的重要桥梁之一。借助这一工具,软件工程师不仅减少了重复劳动量——因为不再需要手写大量繁琐的基础 CRUD (Create Read Update Delete) 操作逻辑;同时也增强了系统的可扩展性和灵活性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值