ORM框架的简单介绍

1. 什么是ORM?

对象-关系映射(Object-Relational Mapping,简称ORM),面向对象的开发方法是当今企业级应用开发环境中的主流开发方法,关系数据库是企业级应用环境中永久存放数据的主流数据存储系统。对象和关系数据是业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据。内存中的对象之间存在关联和继承关系,而在数据库中,关系数据无法直接表达多对多关联和继承关系。因此,对象-关系映射(ORM)系统一般以中间件的形式存在,主要实现程序对象到关系数据库数据的映射。

2.为什么使用ORM?

当我们实现一个应用程序时(不使用O/R Mapping),我们可能会写特别多数据访问层的代码,从数据库保存、删除、读取对象信息,而这些代码都是重复的。而使用ORM则会大大减少重复性代码。对象关系映射(Object Relational Mapping,简称ORM),主要实现程序对象到关系数据库数据的映射。

3.对象-关系映射解释:

A . 简单:ORM以最基本的形式建模数据。比如ORM会将MySQL的一张表映射成一个Java类(模型),表的字段就是这个类的成员变量
B . 精确:ORM使所有的MySQL数据表都按照统一的标准精确地映射成java类,使系统在代码层面保持准确统一
C .易懂:ORM使数据库结构文档化。比如MySQL数据库就被ORM转换为了java程序员可以读懂的java类,java程序员可以只把注意力放在他擅长的java层面(当然能够熟练掌握MySQL更好)
D.易用:ORM包含对持久类对象进行CRUD操作的API,例如create(), update(), save(), load(), find(), find_all(), where()等,也就是讲sql查询全部封装成了编程语言中的函数,通过函数的链式组合生成最终的SQL语句。通过这种封装避免了不规范、冗余、风格不统一的SQL语句,可以避免很多人为Bug,方便编码风格的统一和后期维护。
这里写图片描述

4. ORM的优缺点:

优点:
1)提高开发效率,降低开发成本
2)使开发更加对象化
3)可移植
4)可以很方便地引入数据缓存之类的附加功能
缺点:
1)自动化进行关系数据库的映射需要消耗系统性能。其实这里的性能消耗还好啦,一般来说都可以忽略之。
2)在处理多表联查、where条件复杂之类的查询时,ORM的语法会变得复杂。


5. 常用框架:

(1)Hibernate 全自动 需要写hql语句

(2)iBATIS 半自动 自己写sql语句,可操作性强,小巧

(3)mybatis

(4)eclipseLink

(5)JFinal

### ORM框架的基本概念 ORM(Object-Relational Mapping,对象关系映射)是一种编程技术,用于将面向对象模型中的对象与关系型数据库中的表进行相互转换[^3]。具体来说,ORM允许开发者通过操作对象的方式来间接完成对数据库的操作,而无需编写复杂的SQL语句。 #### 工作原理 ORM框架的核心在于建立一种映射机制,使得程序中的对象能够自动对应到数据库中的表格结构。以下是其主要的工作流程: 1. **定义实体类**:在应用程序中定义一组Java/C#/Python等语言的对象类,这些类通常被称为实体类,它们代表了数据库中的表。 2. **配置映射规则**:通过XML文件或者注解的方式指定如何把对象属性映射成数据库字段。例如,在Hibernate中可以使用`@Entity`标记一个类作为持久化实体,并用`@Column`来描述列名与其他细节[^4]。 3. **执行CRUD操作**:当调用某个方法保存、更新或删除记录时,ORM工具会自动生成相应的SQL命令并发送给底层的数据源处理;查询请求则会被转化为SELECT语句返回结果集再封装回目标类型的实例集合[^1]。 4. **缓存管理**:为了提高效率减少重复访问次数,许多高级别的ORM解决方案还提供了内置的一级/二级缓存功能支持[^2]。 5. **事务控制**:大多数成熟的ORM库都具备完善的事务管理系统,确保多步逻辑单元要么全部成功提交要么完全撤销更改。 下面是一个简单的例子展示如何利用EF Core这个流行的C#领域内的ORM来进行基本增删改查动作之一—新增一条数据项: ```csharp using Microsoft.EntityFrameworkCore; public class BloggingContext : DbContext { public DbSet<Blog> Blogs { get; set; } } public class Blog { public int BlogId { get; set; } public string Url { get; set; } } // 创建上下文实例并与数据库交互 var context = new BloggingContext(); context.Blogs.Add(new Blog { Url = "http://example.com" }); await context.SaveChangesAsync(); // 提交变更至DBMS服务器端 ``` 上述代码片段展示了怎样借助DbContext API轻松实现向blogs表里插入新纪录的过程[^5]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值