不限编程语言,你认为哪个 ORM 最好用?

2022 年 7 月 15 日
 yodhcn

用过一段 nodejs 的 prisma,CURD 确实很爽,但麻烦一点的查询就只能手写 SQL 了,因为 prisma 这个框架不提供底层的 query builder ,最后还是换回了 knex 这个 query builder 一把梭。

我想了解一下其它编程语言都有哪些好用的 ORM ,哪些 feature 让你选择这个 ORM ?

听说过 laravel 的 Eloquent 很好用,但不知道 php 现在 Type Hints 发展的怎么样,有没有像 typescript 一样被广泛应用,因为现在大部分常用的 npm 包都有官方或第三方 typescript 类型注释支持。

21710 次点击
所在节点    程序员
144 条回复
keenkiller
2022 年 7 月 16 日
这和语言关系太大,rails 肯定是最强的
Leviathann
2022 年 7 月 16 日
@mind3x 这个是同步的
tf2
2022 年 7 月 16 日
@mind3x 大佬这一说跟大家整无语了。
raptor
2022 年 7 月 16 日
当然是 SQLAlchemy
2NUT
2022 年 7 月 16 日
php 的 laravel
RRRoger
2022 年 7 月 16 日
odoo orm
beginor
2022 年 7 月 16 日
C# 的 NHibernate ,EFCore 都挺不错的
beginor
2022 年 7 月 16 日
@beginor 应该是 .NET 的 NHibernate 和 EFCore
msg7086
2022 年 7 月 16 日
如果你想玩 Ruby 那就看看 Rails 。如果不玩,那就找个抄得最像的凑合一下。如果没有抄得像的,那就去学 Ruby 和 Rails 然后自己抄一个。
而且 Ruby 就是强类型有类型注释的动态语言啊?
fgwmlhdkkkw
2022 年 7 月 16 日
SQLAlchemy
Typegoogse
Rasphino
2022 年 7 月 16 日
efcore
iintothewind
2022 年 7 月 16 日
.net linq 是最优雅的吧
我只看过代码 没用过
yodhcn
2022 年 7 月 16 日
@msg7086 #109 Ruby 原来是强类型的吗?不是和 python 类似的吗?

另外,我还有几个问题像请教一下:

你们为啥都在推荐 Rails ?哪些 feature 让你选择了 Rails 和 Ruby ?
Rails 啥现在没有以前那么热了?感觉国内现在除了 Java 就是 Go
你的意思是,后来的 web 框架都借鉴 Rails ,但都没抄明白?最后还是没有 Rails 好用?
clf
2022 年 7 月 16 日
不限制数据库的话,Mongo SpringBoot Starter 最爽。
pluvet
2022 年 7 月 16 日
Eloquent
HarveyZh
2022 年 7 月 16 日
kotlin 的 ktorm,比我现在用的 gorm 好用太多了 https://www.ktorm.org/zh-cn/
TWorldIsNButThis
2022 年 7 月 16 日
看完这贴,还是不知道这些所谓好用的到底是怎么个好用法
StarkWhite
2022 年 7 月 16 日
@mind3x 不是我针对谁,我是说所有代码生成的 orm 都是垃圾 /滑稽
msg7086
2022 年 7 月 16 日
@yodhcn #113 是和 Python 类似啊,Python 也是强类型的。
Rails 的话,首先 Ruby 这门语言的表达能力强,写起来舒服,这个对我是最重要的。我现在所有的项目(除了公司的)都已经用 Ruby 写了,包括平时用的小工具,服务器上的运维脚本,等等。
其次是 Rails 本身就是追求最佳实践和约定优于配置。学习 Rails 上手做一个 hello world 级别的项目(比如一个简易的博客)基本上只要几十分钟时间,而且只要你跟着 Rails 的教程走,你的项目就会是可维护、可测试的。
比如说 Rails 的 ORM 有 database migration 机制,数据库结构的变更可以用代码来描述(增加或者删除列,修改类型,等等),然后你部署新版本的时候只要 migrate 一下数据库就会自动执行变更集,不需要手动去管理。
又比如说 Rails 很容易集成 BDD 测试驱动开发套件(比如 rspec ),你写生产代码的时候可以一并把测试用例写完。对于 Web 项目,你可以一次性把单元测试和功能测试全部搞定,还有 capybara 这种模拟浏览器点击的组件可以用,这些都可以促使程序员去写可维护可测试的代码。

Rails 好像从来就没在国内热过。
西方的初创企业会大规模用 Rails ,因为开发实在是太快了。一个点子想出来,一星期时间就可以从头到尾做完上线测试了,并且可以一直持续迭代到你拿到疯投为止,都不太会有很大的瓶颈。
至于借鉴,我只知道很多框架都或多或少借鉴了一些 Rails 的东西。(当然你也可以说 Rails 之前就有同样风格的框架了,但是我觉得当时没有任何一个框架能像当年 Rails 一样把各种精华都集中到一起去。)

当然对于陌生人我一般不会推荐学 Ruby 和 Rails ,原因你也说了,在国内太小众了,没有前途。在美国 Ruby 的工作岗位有不少,前段时间我以前从零开始带入门 Ruby 的徒弟告诉我他找到一个挺不错的工作,远程在家办公写 Rails ,一年 15 万美元。国内学 Ruby 和 Rails 的,大都是真的喜欢 Ruby 和 Rails 的人,否则为什么不学 Python Java Go 呢,哪怕 PHP 工作也比 Ruby 多啊。但是尽管如此,学一下 Rails 还是很好的,有很多最佳实践的概念会影响你一生,让你写其他语言的时候也能受益。
还有一个原因是 Ruby 和 Rails 太容易搞出 black magic 了。black magic 会让你写代码的时候大呼惊奇,但是万一出了问题踩了坑,那就只能一坑到底爬不上来了。这个我下一楼再说。

很不幸的,我现在工作用的是 Java 8 。我现在还是保持和以前一样的习惯,写项目会写单元测试和功能测试,写组件会更倾向于拆分结构,写接口会尽可能更「人性化」一些,所以学过 Rails 姑且还是有好处的。
StarkWhite
2022 年 7 月 16 日
生成代码一时爽,后期维护火葬场

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/866413

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX