技术框架中ORM概念和原理的学习

ORM概念和原理

ORM 概念

我们在介绍 MyBatis 时说到,MyBatis是一种半自动 ORM 实现。那何为 ORM,何为半自动?

ORM(Object/Relation Mapping,对象/关系数据库映射)是一种描述对象与关系数据库之间映射的规范。

ORM 作用

Java对象和关系数据库如同马和牛,简直是牛头不对马嘴,存在不协调的问题。那这个不协调的问题导致怎样的结果呢?导致的结果就是我们在数据库编程时,使用 JDBC 从数据库里获取的不是对象,而是一个个数据库字段,需要手动创建一个 Java 对象实体,再把这些字段存放到 Java 对象实体的属性里。代码如下:

// 从数据库获取字段
int id = rs.getInt("id");
String userName = rs.getString("userName");
String password = rs.getString("password");
String name = rs.getString("name");
int age = rs.getInt("age");
int sex = rs.getInt("sex");
Date birthday = rs.getDate("birthday");
String created = rs.getString("created");
String updated = rs.getString("updated");

// 创建对象实体并将字段存放到对象属性中
UserEntity userEntity = new UserEntity();
userEntity.setId(id);
userEntity.setUserName(userName);
userEntity.setPassword(password);
userEntity.setName(name);
userEntity.setAge(age);
userEntity.setSex(sex);
userEntity.setBirthday(birthday);
userEntity.setCreated(created);
userEntity.setUpdated(updated);

由于 Java 对象与关系数据库之间不协调的问题,导致的结果就是数据库编程代码繁琐,开发效率低。

MyBatis 是一款部分实现 ORM 规范的框架,它可以把关系型数据库封装成对象,解决面向对象编程语言与关系数据库之间不协调的问题,从而搭建面向对象编程语言与关系数据库之间的桥梁。

ORM 映射规则

  1. 类与表相对应(基本规则)
  2. 类的属性(或成员变量)与表的字段相对应(基本规则)
  3. 类的实例与表中具体的一条记录相对应(基本规则)
  4. 一个类可以对应多个表,一个表也可以对应多个类
  5. 数据库中的表可以没有主键,但是类中必须有主键字段
  6. 数据库中表与表之间的关系对应类与类之间的关系
  7. 数据库中表的字段个数和名称可以和类的属性(或成员变量)不一样

这7条 ORM 映射规则中,前3条是基本规则,也是最重要的规则。

ORM 框架

我们已经知道 ORM 是一种规范,ORM 本身并不能带来开发效率的提升,需要实现规范才行。

ORM 框架就是指实现了 ORM 映射规则的框架,而 MyBatis 就是一种 ORM 框架,当然Hibernate也是。有了这些 ORM 框架,我们就不用自己手动编写代码去实现 ORM 规范,使用 ORM 框架就可以发挥 ORM 规范的威力,以提升开发效率。

ORM 总结

  • ORM 作用是为对象与关系数据库之间搭建桥梁,以解决对象与关系数据库之间不协调的问题
  • ORM 框架已实现 ORM 映射规则(MyBatis 为半自动 ORM 框架,而 Hibernate 为全自动 ORM 框架)
posted @ 2024-12-02 19:02  BingBing爱化学-04044  阅读(5)  评论(0编辑  收藏  举报