一、什么是ORM框架
ORM(Object Relational Mapping,对象关系映射),是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术,通过描述对象和数据库之间映射的元数据,把程序中的对象自动持久化到关系数据库中。它的作用是在关系型数据库和对象之间作一个映射,这样,我们在具体的操作数据库的时候,就不需要再去和复杂的SQL语句打交道,只要像平时操作对象一样操作它就可以了 。
持久(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的数据存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等等。
它的存在关联着面向对象的开发方法和关系数据库。这二者都是企业级应用开发环境中的主流技术和应用系统。
ORM就是把业务实体中的对象与关系数据库中的关系数据关联起来。
对象-关系映射(ORM)系统一般以中间件的形式存在,主要实现程序对象到关系数据库数据的映射。
ORM技术特点:
- 提高了开发效率。ORM可以自动对Entity对象与数据库中的Table进行字段与属性的映射,所以我们实际可能已经不需要一个专用的、庞大的数据访问层。
- ORM提供了对数据库的映射,不用sql直接编码,能够像操作对象一样从数据库获取数据。
ORM的优缺点:
- 性能影响。面向对象的处理方式会对性能造成影响
- 更多的系统层次会造成执行效率的降低。
常见的ORM框架:
- Java系列:
Apache OJB
Hibernate:目前最流行的开源ORM框架
iBatic
Mybatis - .Net系列:
NHibernate:面向.NET环境的对象/关系数据库映射工具
Linq to sql:适用于一些轻型的,小的ORM适用
EntitysCodeGenerate
PetaPoco - Node.js系列:
ORM2:https://github.com/dresende/node-orm2
sequelize:本文要研究的框架,较常用
Knex.js:官网:https://knexjs.org/
TypeORM:采用 TypeScript 编写,支持使用 TypeScript 或 Javascript(ES5,ES6,ES7) 开发。目标是保持支持最新的 Javascript 特性来帮助开发各种用户数据库的应用 - 不管是轻应用还是企业级的
二、sequelize
1. 介绍:
基于promise的关系型数据库ORM框架,这个库完全采用JavaScript开发并且能够用在Node.JS环境中,易于使用,支持多SQL方言(dialect),。它当前支持MySQL,、MariaDB、SQLite、PostgreSQL、Sql Server 数据库。
官网:http://docs.sequelizejs.com/
2. 安装
安装命令:
npm i sequelize mysql2 -S
基本使用:
//引入sequelize
const Sequelize = require("sequelize");
// 建立连接
const sequelize = new Sequelize("test", "root", "admin", {
host: "localhost",
dialect: "mysql", // mysql/postgre/sql server/sql lite
operatorsAliases: false
});
//定义模型
const User = sequelize.define('user', {
firstName: {
type: Sequelize.STRING,
allowNull: false
},
lastName: {
type: Sequelize.STRING
// allowNull defaults to true
}
});
// 同步数据库
// Note: using `force: true` will drop the table if it already exists
User.sync({ force: true }).then(() => {
// Now the `users` table in the database corresponds to the model definition
return User.create({
firstName: 'John',
lastName: 'Hancock'
});
});
在上述例子,使用sequelize使用三段式:
连接数据库
定义模型
同步数据库