为什么要使用ORM框架

4 篇文章 0 订阅
3 篇文章 0 订阅

在java程序里用大量的aql语句代替了orm,在数据库由mysql改为oracle时,这些sql语句会由于语法原因大量报错,怎么办?欢迎讨论! 但是如果我们使用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语句,可操作性强,小巧

欢迎大家点点关注和参与讨论,后续还会持续发布Java方面的文章(面试题)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 ORM 框架可以让我们更加方便地访问 MySQL 数据库。在 .NET Core 中,常用的 ORM 框架有 Entity Framework Core 和 Dapper。 以下是使用 Entity Framework Core 访问 MySQL 数据库的简单示例: 1. 首先,需要在项目中安装 Entity Framework Core 和 MySQL 驱动程序。可以在 NuGet 包管理器中搜索 "Microsoft.EntityFrameworkCore" 和 "MySql.Data.EntityFrameworkCore" 并安装它们。 2. 在代码中引入命名空间: ```csharp using Microsoft.EntityFrameworkCore; ``` 3. 创建 DbContext 类,并重写 OnConfiguring 方法: ```csharp public class MyDbContext : DbContext { protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { string connectionString = "server=localhost;port=3306;database=mydatabase;uid=myusername;password=mypassword"; optionsBuilder.UseMySql(connectionString); } } ``` 其中,connectionString 是 MySQL 连接字符串。 4. 创建实体类: ```csharp public class MyEntity { public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } } ``` 5. 将实体类映射到数据库表: ```csharp public class MyDbContext : DbContext { public DbSet<MyEntity> MyEntities { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<MyEntity>().ToTable("mytable"); modelBuilder.Entity<MyEntity>().HasKey(e => e.Id); modelBuilder.Entity<MyEntity>().Property(e => e.Name).IsRequired(); modelBuilder.Entity<MyEntity>().Property(e => e.Age).IsRequired(); } } ``` 6. 使用 DbContext 进行数据库操作: ```csharp using (var db = new MyDbContext()) { // 查询数据 var entities = db.MyEntities.Where(e => e.Age > 18).ToList(); // 插入数据 var entity = new MyEntity { Name = "Tom", Age = 20 }; db.MyEntities.Add(entity); db.SaveChanges(); // 更新数据 entity.Name = "Jerry"; db.SaveChanges(); // 删除数据 db.MyEntities.Remove(entity); db.SaveChanges(); } ``` 以上是一个简单的使用 Entity Framework Core 访问 MySQL 数据库的示例,您可以根据自己的需要进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值