ORM框架选型
ORM框架选型
jian A YEAR AGO (2017-04-10) orm, database
选型标准:实现O/R mapping,基于promise,支持原生SQL语句,支持连接池,支持事务,支持ES6/ES7。

name star createtime
persistencejs 1681 2010-01-31
sequelize 9354 2010-07-18
node-orm2 2384 2012-11-25
typeorm 1814 2016-02-21
bookshelf 4005 2013-03-10
waterline 3837 2012-11-25
mongoose 11936 2010-04-04
node-mysql 9030 2013-03-05
knex 4326 2012-12-23
备注:以上数据截止2017年4月8日

mongoose只支持mongodb,放弃;node-mysql与knex非ORM框架,放弃;persistencejs2016年以后未更新,放弃。

sequelize
https://github.com/sequelize/sequelize
文档齐全,star最多。

支持数据库:postgresql、mysql、sqlite和sqlserver

特性: 模型定义 模型同步、删除 1:1 1:m n:m 关联
穿透模型 promise
hooks/callbacks/lifecycle
支持原生SQL 连接池 事务 迁移 CLI

node-orm2
https://github.com/dresende/node-orm2
支持数据库: mysql & mariadb
postgresql
amazon redshift
sqlite
mongodb(beta版)

特性: 创建模型、同步、删除、批量新增、获取、查询、删除、统计、集合 创建模型关联 定制有效性验证 模型实例缓存 通过插件支持分页、事务、mysql全文搜索、迁移。 支持原生SQL语句。 连接池,可通过pool参数设置。 promise通过q-rom库实现。

项目近期更新少,与sequelize竞争完全处于劣势,放弃。

typeorm
https://github.com/typeorm/typeorm
采用TypeScript编写的基于node.js的ORM框架,支持使用TypeScript或javascript(ES5,ES6,ES7)开发。

支持数据库:mysql & mariadb、postgresql、sqlite、sqlserver和oracle

特性: 根据Models自动创建数据库表; 可以透明的insert/update/delete数据库对象; 映射数据库表到javascript对象,映射列到javascript对象属性; 提供表的一对一,多对一,一对多,多对多关系处理 支持连接池 支持事务

使用typescript实现,项目比较新,放弃。

bookshelf
https://github.com/tgriesser/bookshelf

bookshelf是基于knex的ORM框架。

支持数据库:mysql & mariadb、postgresql、sqlite3和Oracle

特性: 事务 连接池 流式查询 promise和callback API
原生SQL语句

waterline
https://github.com/balderdashy/waterline

waterline是从Sails框架衍生出来的ORM框架。

支持数据库:mysql、mongo、postgresql、redis等

文档包含在sail文档中:http://sailsjs.com/documentation/reference/waterline-orm 文档不完善,放弃。

最终对比
从以上分析,我们最终从sequelize和bookshelf两者之间做出选择。 项目数据对比: https://nodejs.libhunt.com/project/sequelize/vs/bookshelf?rel=cmp-cat

依赖于sequelize的项目: https://www.npmjs.com/browse/depended/sequelize
依赖于bookshelf的项目: https://www.npmjs.com/browse/depended/bookshelf

1W start以上项目依赖:
ghost项目使用bookshelf
react-starter-kit项目使用sequelize

两者文档都很全面。 sequelize的star数量和版本更新频率高于bookshelf,所以推荐使用Sequelize。

ORM选型对比的更多相关文章

  1. 各种ORM框架对比(理论篇,欢迎来观摩)

    各种ORM框架对比 目前框架有以下 PetaPoco Dapper.NET Massive Simple.Data Chain PetaPoco 轻量级,以前单文件,目前有维护形成项目级别,适合多个数 ...

  2. 各种ORM框架对比(理论篇,欢迎来观摩,并且纠正部分错误,防止误区)

    各种ORM框架对比 目前框架有以下 PetaPoco Dapper.NET Massive Simple.Data Chain PetaPoco 轻量级,以前单文件,目前有维护形成项目级别,适合多个数 ...

  3. MQ选型对比RabbitMQ RocketMQ ActiveMQ

    原文:MQ选型对比RabbitMQ RocketMQ ActiveMQ 几种MQ产品说明:     ZeroMQ :  扩展性好,开发比较灵活,采用C语言实现,实际上他只是一个socket库的重新封装 ...

  4. ORM框架对比以及Mybatis配置文件详解

    ORM框架对比以及Mybatis配置文件详解 0.数据库操作框架的历程 (1) JDBC ​ JDBC(Java Data Base Connection,java数据库连接)是一种用于执行SQL语句 ...

  5. Net环境下比较流行的ORM框架对比

    个人感觉在Java领域大型开发都离不了ORM的身影,所谓的SSH就是Spring+Struts+Hibernate,除了在学习基础知识的时候被告知可以使用JDBC操作数据库之外,大量的书籍中都是讲述使 ...

  6. 我为什么要选择RabbitMQ ,RabbitMQ简介,各种MQ选型对比(转载)

    转载自:https://www.sojson.com/blog/48.html 前言: MQ 是什么?队列是什么,MQ 我们可以理解为消息队列,队列我们可以理解为管道.以管道的方式做消息传递. 场景: ...

  7. uni-app,wex5,APPcan,ApiCloud几款国内webapp开发框架的选型对比

    框架列表. https://www.cnblogs.com/xiaxiaxia/articles/5705557.html 前言 近期,要开一个新的项目,APP类型.最重要的需求就是能够随时调整APP ...

  8. 为什么要选择RabbitMQ ,RabbitMQ简介,各种MQ选型对比

    原文:https://www.sojson.com/blog/48.html 前言: MQ 是什么?队列是什么,MQ 我们可以理解为消息队列,队列我们可以理解为管道.以管道的方式做消息传递. 场景: ...

  9. MQ选型对比ActiveMQ,RabbitMQ,RocketMQ,Kafka 消息队列框架选哪个?

    最近研究消息队列,发现好几个框架,搜罗一下进行对比,说一下选型说明: 1)中小型软件公司,建议选RabbitMQ.一方面,erlang语言天生具备高并发的特性,而且他的管理界面用起来十分方便.不考虑r ...

随机推荐

  1. onsubmit校验表单时利用ajax的return false无效解决方法

    代码: function checkNewEmail(){ var re_email=new RegExp("\\w+@\\w+\\.\\w+\\.?\\w*"); var new ...

  2. Java虚拟机垃圾回收(二) :垃圾回收算法(转载)

    1.标记-清除算法 标记-清除(Mark-Sweep)算法是一种基础的收集算法. 1.算法思路 "标记-清除"算法,分为两个阶段: (A).标记 首先标记出所有需要回收的对象: 标 ...

  3. 转载:/etc/security/limits.conf 控制文件描述符,进程数,栈大小

    原文地址:http://ilikedo.iteye.com/blog/1554822 linux下安装Oracle 一般都会修改/etc/security/limits.conf这个文件,但是这里面的 ...

  4. 关于 NSData 的数据类型(2进制,16进制之间)及深入剖析(转)

    . NSData 与 NSString NSData-> NSString NSString *aString = [[NSString alloc initWithData:adataenco ...

  5. flex 遇到white-space:nowrap

    背景,做一个前面图片宽度固定,后面宽度自适应,使用到了flex布局,但是想让后面div里文字不换行,超出以点点表示时,这时布局就乱了,查了下,原来flex布局与white-space:nowrap有影 ...

  6. java.util.ArrayList,java.util.LinkedList,java.util.Vector的区别,使用场合.

    下图是Collection的类继承图 从图中可以看出:Vector.ArrayList.LinkedList这三者都实现了List 接口.所有使用方式也很相似,主要区别在于实现方式的不同,所以对不同的 ...

  7. Linux性能监控工具 gtop

    给大家介绍一款性能监控工具,个人对比界面比top美观,常用指标比较清晰毕竟top上的指标不是每个人都能熟悉,也不是所有指标参数都需要看,对于新手也不便查找,好了说的再多先上图大家参观一下. 1.安装需 ...

  8. ci框架 用框架自带db 添加括号,比如 like 等等左右添加括号 解决办法

    $this->load->model('station/Station_model','Station'); // East // North $this->Station-> ...

  9. phpstudy启动时Apache启动不了

    打开cmd,输入:D:\phpStudy\PHPTutorial\Apache\bin\httpd.exe -t 回车,即显示错误信息 说是我们的有一个文件目录不存在或者不可读取, 出现这个一般有两种 ...

  10. ECSHOP和SHOPEX快递单号查询韵达插件V8.6专版

    发布ECSHOP说明: ECSHOP快递物流单号查询插件特色 本ECSHOP快递物流单号跟踪插件提供国内外近2000家快递物流订单单号查询服务例如申通快递.顺丰快递.圆通快递.EMS快递.汇通快递.宅 ...