|  |      1niubee1      73 天前 Orm 有好用的吗? | 
|  |      3ruchee      73 天前  6 那必须得是祖师爷 Rails | 
|  |      4ratazzi      73 天前 via iPhone  5 那必须是 Rails | 
|      5liuhaitaoSB      73 天前 rails 这么叼吗 | 
|      70xxb      73 天前  4 Laravel 和 Eloquent ORM | 
|  |      8mitoop      73 天前  1 这必须是 Laravel  啊 | 
|  |      9cmdOptionKana      73 天前  2 如果比 Rails 更好用,那大概率也是在 Rails 的基础上改进的。 | 
|  |      101zh3n      73 天前 via Android Prisma ,用起来很自然,心智负担很小。 事务直接放数组里面: const [posts, totalPosts] = await prisma.$transaction([ prisma.post.findMany({ where: { title: { contains: 'prisma' } } }), prisma.post.count(), ]) | 
|  |      11ratazzi      73 天前 夸 Laravel 还行,但是夸 Prisma 的真是没预料到,这辈子都不想再用: 根本不能算模型定义的模型 migration 根本没法用 简单的保存是有了 id 还用要 id 执行一遍查询,然后再更新,然后在获取更新后的结果 | 
|      12uxstone      73 天前 Spring Boot + Mybatis Plus | 
|  |      13XCFOX      73 天前  16 我给 TypeScript ORM 排个名: Drizzle > Kysely > Orchid ORM >> MikroORM > Prisma > TypeORM Drizzle 、Kysely 已经是版本答案了:没有太花哨的功能,只需要写 SQL ,ORM | SQL Builder 将给你类型安全的查询结果。 Kysely 只是一个 SQL Builder ,类型安全方面做得也是最好的; Drizzle 在 SQL Builder 的基础上加了表结构定义,能满足表迁移的许多工作,因此把 Drizzle 排在 Kysely 前面。 Orchid ORM 非常小众,除了 SQL Builder 和表结构定义还加了许多 EntityManager | Repository 的糖,但主要还是以 SQL Builder 为主。 再之后就是传统的围绕 Entity 的 ORM 。这一类 ORM 都内置了丰富的 EntityManager | Repository 的功能,SQL Builder 功能只是作为兜底方案。这类 ORM 的通病是 Repository API 无法满足所有的 SQL 写法,到头来还是得写 SQL 。 这其中功能做的最全的是 MikroORM ,隐式事务、实体事件监听、过滤器、Migrations 、Seeding ,也内置了 Knex 作为 SQL Builder 。 Prisma 的主要槽点是:使用自己发明的 Prisma Schema 用于定义表结构、使用自己发明的 Repository API 用于读写数据库,后果是增加了学习成本,隐藏了许多细节碰到问题了不太容易排查; TypeORM 毫无疑问垫底,连最基础的空安全和类型安全都不好。隔壁 MikroORM 6.5 已经在用 `defineEntity` 尝试摆脱了对 Decorators 的依赖。TypeORM 前两年都没怎么维护,今年有了新的团队接手才开始处理积攒了几年的 issue 。 | 
|  |      14zpvip      73 天前  11 很多人根本没真正用过 Rails ,这已经是一种技术上的遗憾。你们天天吹前后端分离、Microservices ,殊不知那不过是自嗨,搞得整个项目复杂化、性能折腾、调试痛苦,用户体验倒退, 成天看着菊花转啊转。Rails 告诉你:什么是高效、简洁和稳健。 Rails 的开发效率是任何 JS 、C#、Java 、Python 框架都望尘莫及的。一个标准的 CRUD 网站,加上各种 Gems, 几小时就能上线一个带 RBAC 带后台的管理系统,ActiveRecord ORM 简直是魔法,数据库操作简单得让你怀疑人生。而你们那些前后端分离、手动调接口的项目,动不动就死在同步和状态管理上。 现在有了 AI ,99% 的网站根本不需要前后端分离。以前是前端的开发者可以自己定制后端, 以前是后端的开发者, 可以让 AI 帮你写前端。如果用 Hotwire 就可以告别 React 、Vue 的冗余和复杂性,如果用 Hotwire Native 适配一下,就可以用极少的代价上线 iOS + Android. 真正做过 Rails 的人,从来不想回到 JS/Java/C# 的折磨里。Rails 不只是开发工具,它是高效网站开发的标准,其他框架,只能是“绕路”的选择. | 
|      151wlinesperday      73 天前 为什么没人喜欢 Golang 的 Ent ? | 
|  |      16huamu      73 天前 C#中 Dapper | 
|  |      17isSamle      73 天前  2 Django | 
|  |      18masterclock      73 天前  1 scala 的一些 ORM ,比如 doobie 得益于 scala 语言的特性,大部分其他语言的 ORM 还有些距离 | 
|  |      20TanKuku      73 天前 用过最舒服的应该是 kotlin 搭配 JOOQ | 
|  |      21askfilm      73 天前 symfony +  doctrine ORM | 
|      22momo2789      73 天前 说的我都想学习一下 Rails 了 | 
|  |      23coolair      73 天前  2 sqlalchemy | 
|  |      24cooper      73 天前 Eloquent ( Laravel ) 或者 Active Record ( Rails )。个人更喜欢 Eloquent 。 | 
|      25dode      73 天前 Spring JPA | 
|  |      26bugcreator      73 天前 @1zh3n #19 Prisma 新加字段 drop table 再 craete table,恶心至极 | 
|  |      27Valid      73 天前  1 adonisjs and lucid | 
|      28Binwalker      73 天前  2 Active Record 吊打现在所有 ORM | 
|      29redvoilin      73 天前  3 rails 和 rails 的 orm Active Record | 
|      30dddd1919      73 天前 @zpvip #14 java/ruby 双修仔只能说,java 是工作,ruby 是生活,多人协作的大项目用 java 出错概率更低,个人的话 ruby 干啥都是飞起的效率 | 
|  |      31NoobNoob030      73 天前 Laravel 的 Eloquent 在我心中 NO.1 | 
|  |      32williamherry      73 天前  1 肯定是 Rails 了 | 
|  |      33tanszhe      73 天前  1 @1wlinesperday 垃圾 一个半成品 | 
|  |      34idragonet      73 天前 c# SqlSugar | 
|  |      35bf109_ PRO rails 的 gem 挺魔幻的 | 
|      36TWorldIsNButThis      73 天前 via iPhone @masterclock 但是各种 poll 都显示 Scala 已经似了😭 | 
|  |      37liuliuliuliu PRO  2 c# 的 entity framework 啊,最好用没有之一 linq 语法、状态跟踪等等 举个简单的例子,就这个简单的例子很多语言都实现的很丑 var users = dbContext.Users .Where(u => u.Age > 18) .OrderBy(u => u.Name) .ToList(); users.First().Name = "zhangsan"; dbContext.Save(); | 
|      38nananqujava      73 天前 想起了 Dapper,  以前 C#这些库都很少,  Dapper 简单真好用 | 
|      39nananqujava      73 天前 @liuliuliuliu #37   java 的现在也很丑陋 | 
|      40guotie      73 天前 我觉得 typeorm 挺好,用过一次 | 
|  |      41s5s5      73 天前 @zpvip #14 总结: 正确性: Rails 在它所擅长的领域(尤其是快速构建 CRUD 密集型 Web 应用)确实拥有极高的开发效率、简洁优雅的设计(如 ActiveRecord 、Hotwire )和强大的生态系统。它是一个极其优秀的选择。 偏激性: 评论过度贬低了前后端分离、微服务及其他语言框架,将其固有的挑战(复杂性、性能瓶颈可能是设计不良的结果而非架构本身)简单等同于失败,并武断地定义了“99%”的网站需求(这无法证实)和所有开发者的偏好(这不符合现实)。对 AI 赋能的能力也过于乐观。 | 
|      42shellic      73 天前 Laravel | 
|  |      43ultimate42      73 天前 @bugcreator 你真深入用过 prisma 吗? prisma 在修改字段类型或字段名的时候才会删表吧,而且还需要你手动确认,新增字段怎么会删表,prisma 的痛点是得手动处理嵌套层级还有时区的问题 | 
|  |      44cKnight      73 天前 自己对 mybais-plus 进行了二次封装,感觉挺好用的。贴两个例子 @Override public PageVO<AiChatVO> queryChatPage(AiChatReq aiChatReq) { SysCacheUserDto adminUserInfo = getAdminUserInfo(); return select(aiChatMapper) .where() .eq(AiChat::getUserId,adminUserInfo.getId()) .orderDesc(AiChat::getCreateTime) .page(aiChatReq, AiChatVO.class); } @Override public Map<Long,ChatRecordMsgJsonDto> queryMsg(List<Long> ids) { if (CollectionUtils.isEmpty(ids)){ return Map.of(); } return where(aiChatRecordMsgMapper) .in(BaseDO::getId, ids) .hasMap( BaseDO::getId, v-> JSONObject.parseObject(v.getMsgDetail().toString(),ChatRecordMsgJsonDto.class) ); | 
|  |      45kxg3030      73 天前  2 php 的 orm 是所有语言最好用的  务必强大 | 
|      47coderzhangsan      73 天前 rails 以及吸收它理念设计其他框架,例如 laravel | 
|      48spritecn      73 天前 @serverKnignt  mybais-plus 不封装也挺好用的,我们只是因为主键用 UUID,做了一些通用查询 | 
|  |      49liuxey      73 天前 当年的 rails  spring 都要给它让道 | 
|  |      51qcbf111      73 天前 为什么不用 mongodb 呢? | 
|      52v2er119      73 天前 不限语言? delphi 的 bed ,一个 grid 包含所有批量 单行,单格 增删改查 分页,滚动加载,一行代码不用写。 | 
|      53v2er119      73 天前 不限语言? delphi 的 bed ,一个 grid 包含所有(批量 、单行、单格) 增删改查 分页,滚动加载,所见所得,一行代码不用写。 | 
|      54lmshl      73 天前  2 Scala 的 Quill, doobie https://zio.dev/zio-quill/ https://typelevel.org/doobie/ Rust 的 SQLx https://github.com/launchbadge/sqlx 我看中的是类型安全,编译期错误检查。不要有自作聪明的 DSL ,越接近 raw SQL 越好。 因为 SQL 才是真正通用的知识,任何妄图在编码中曲解或隐藏 SQL 的 ORM 框架我觉得都是垃圾。(此处点名批评 Hibernate 与同类框架) | 
|      56eastcukt      73 天前 via Android  1 看到上面那些代码标识的 where ,order by 就头痛,直接写 sql 简洁清晰不好吗 | 
|  |      58cloudzhou      73 天前 @zpvip 然后 Rails 的市场占有率低到几乎工作都找不到,早先我第一次接触 Django ,相对 Java 世界耳目一新,惊为天人,但是两边开发之后,理解了静动态语言的各自适应处,理解为什么大型开发还是 Java/C#/Go 的选择 而有了 AI ,让静态语言开发更容易了,之前的繁琐细节更被磨平了 大型项目开发,第一要素不是高效,而是可维护、可持续 | 
|  |      59jchnxu      73 天前 | 
|      60kakki      73 天前 ROR | 
|  |      61whatiam      73 天前 @dode 同意。大家可以考虑这些场景: * 兼容市面上绝大部分的数据库,包括这些数据库的变种和历史版本(这点得益于强大的社区方言维护,只需要引入对应的社区大佬写的方言包,就能适配数据库) * 自动建表/安全的维护表结构 * 几乎零感知,同时也可以支持手写 SQL | 
|      62james122333      73 天前 via Android 答案是没有 SQL 本来就不是很好用 各语言框架也都是用起来马马乎乎可交差用或难受 目前计算机世界就是多数都是搞砸的东西 | 
|  |      63accelerator1      73 天前 @XCFOX #13 老牌的 sequelize 有啥问题? | 
|      65james122333      73 天前 via Android 把搞砸的东西当宝我是无法理解 | 
|      66stevefan1999      73 天前 Entity Framework Core + ASP.NET Core + Hot Chocolate = Free GraphQL Server | 
|  |      67mywaiting      73 天前  1 纯粹 ORM 肯定是 rails 这个是没有之一的存在 但是长期工作中,我忽然发现很难脱离 SQL 去处理极端的情况 现在基本就是用各种 ORM 对应的 SQL 工具层,或者增强版的 DBAPI 层实现,比如 SQLAlchemy Core 部分 简单的 CURD 用其工具层的实现,代码更少更方便 复杂的查询,直接用 raw sql 反而更直观更好理解 | 
|  |      68lovedebug      73 天前 NestJS 算是很好用的 Node.js 框架了 | 
|      69kakki      73 天前  1 ORM 是为了解决开发效率而存在的, 串出来的 SQL 教徒差不多得了, 怎么不去手写 assembly. 更直观更好理解, 但是开发速度完全不谈是吧? | 
|  |      70niubiman      73 天前 必须是 entity framework | 
|  |      71bowencool      73 天前 @bugcreator #26 照你这么说,prisma 完全不可用,这可能吗。。。 | 
|  |      72zeuss      73 天前 | 
|  |      73manhere      73 天前 php 平台的无敌,其他的都是弟弟 | 
|      75leoskey      73 天前  1 那必须是 EntityFramework 了。一个 DbContext 搞定初始化,一个 migrations 搞定数据表,一个 linq 搞定查询 | 
|  |      76niubiman      73 天前 @eastcukt 因为,where, order by 不止是 orm 中可以使用,在 c#中,对 list ,array 等等集合、数组都可以进行 where ,select ,order by , 语法完全一致,可以说是所有语言中最优雅的了, 没有之一,不服举例来辩 | 
|      78K332      73 天前 | 
|      79pulutom40      73 天前 via iPhone PHP 的 orm 最好用,实际工作中直接写 sql ,然后框架仅仅转成结构体就行了,简单的最好用 为什么要直接写 sql? 1.sql 表达比各种蹩脚的 where and or 函数表达简洁清晰高效太多了,特别是复杂 sql 2.数据库 proxy 引入了太多方言,没有任何 orm 框架考虑过数据库 proxy 的问题 | 
|  |      80tanszhe      73 天前 都是范范而谈 来列举出来 1. 一对一 2. 一对多 3. 多对多 4. 多态 5. 非主键的关联(某系 orm 只支持主键) 6. 注释(强制走主库) 7. hook 支持 8. 跨库关系预加载( mysql 预处加载 pgsql ) 9. 安全性 10. 缓存 | 
|  |      81beginor      73 天前 NHibernate 成员路过,NHibernate 不是性能最强的,但是是最优雅和完善的。 | 
|  |      82guiyumin      73 天前  1 我觉得 orm 最大的问题是尝试一个框架来覆盖所有数据库 一个库就应该专精于一个数据库 | 
|  |      83lambdaq      73 天前 ORM 你只管负责好用就行了 但凡加一个 redis es mongo 一用一个不吱声 | 
|  |      84xiaoshan5733      73 天前 Drizzle+1 ,符合直觉编程,上手快 | 
|  |      85zpvip      73 天前  4 @s5s5 #41, 来来来, 举例说明, 哪个前后端分离、微服务及其他语言框架的 CRUD 不能用 Rails SSR 搞定? 复杂性、性能瓶颈是出在 Rails?  前后端分离的出现是因为要切分任务, 微服务是切分功能, 都是在没有 AI 的情况下, 人的精力和水平有限, 搞不定. 一般要升职, 就要用前后端分离和微服务跟自己的 Manager 画饼, 然后招一堆人做自己的手下, 自己就能管人了, 然后每天开站会, 让各个团队对齐颗粒度, 尽做些浪费时间的事. 性能的问题 99%的网站都不用考虑, 最多做个 LB, 大不了 K8s, 我做 IoT 的, 时序数据库都是 TB 级别, 单表都上 TB, insert 都是时刻不停 1000 条一批插入的, 瓶颈绝对不在 Rails. @cloudzhou #58 用的人少有利有弊, 利大于弊. Java 仔就像麦当劳的员工, 随便找随便开, 有你不多没你不少. 国内找不到可以找国外的. 那些整天宣扬静态,可编译语言适合大工程, TS 有类型更安全之类的人, 都是活在自己的想像里. 我用 Ruby 多年, 修过数不清的 Bug, 唯独没有遇到过数据类型的 Bug. 现在有了 AI, 不仅仅是静态语言开发容易了, 动态的也更容易啊, 测试都能给你写好, 什么临界条件都给你测全了. AI 写 Rails 的 RSpec 测试写得那叫一个漂亮. Java 仔, C# 仔, 沉迷在你们的 DI 和 Service 里面吧, 说实话, 这么罗嗦的框架, 我看看代码都替你们头痛, 好多预防性编程, 把程序员当傻子防. | 
|  |      86noyidoit      73 天前 四年没碰 PHP 了我还是很怀念 Laravel 和 Eloquent | 
|      87hervey0424      73 天前 说 java 的哪些一定没有用过其他语言 | 
|  |      88xiangyuecn      73 天前 在我眼里要求比较低:只要面对复杂 SQL ,不需要我自己去写一个框架的就行🐶 不能良好支持手写 sql 的,就是垃圾 ORM 框架,尤其是那些严重恶意阻碍手写的。反之就是优秀的。😂 类似 c#的 linq 那种形状的就差不多,但肯定不能学 linq ,linq 那玩意写起来太屎了😂 | 
|  |      89dragondove      73 天前 @masterclock doobie 不是 orm 呀,算是个简易的 sql builder ,都与 sql 构建器,我推荐一个 sqala 文档网站: https://wz7982.github.io/sqala-doc/ scala 用户站介绍帖: https://users.scala-lang.org/t/sqala-compile-time-sql-for-scala-3-with-named-tuples-and-semantic-checking/10837 我个人也不喜欢 ORM ,隐藏太多细节了,门槛太高,个人感觉 sql builder 完全够用够好用。 | 
|  |      90niubiman      73 天前 @xiangyuecn 不想写 linq 你可以写 lambda 表达式啊,两种写法都是可以的 | 
|  |      91yoshiyuki      73 天前  1 php 里面 yii2 自带的 orm | 
|      92dotw2x      73 天前 Rails 的 Active Record 和 C#的 EF 都用过,就开发使用体验而言,两者很相像,但 ef+linq 还是比较顺手和简单的. | 
|      93y2025      73 天前 必须 Rails ,用了很多年,后来在其它语言上再也没有遇到同级别的 | 
|  |      94bingo084      73 天前 via Android Kotlin+Jimmer ,不过我没用过其他语言的,但是这个对比 JPA 、Mybatis 之类的都是爆杀 | 
|      95dq19871123      73 天前  1 我投 Entity Framework 一票 | 
|  |      96dragondove      73 天前 @liuliuliuliu 你这个例子没什么难度啊,用 scala 的 sqala 这么写就行: val users = db.fetch(query: from[User].filter(_.age > 18).orderBy(_.name) ) db.save(users(0).copy(name = "Dragon")) 甚至大部分人唾弃的 java 都有类似的库可以做到,java 的 drink 库 https://github.com/kiryu1223/drink 可以这么查 List<User> users = client.query(User.class) .where(u -> u.getAge() > 18) .orderBy(u -> u.getAge()) .toList(); 只不过 drink 的更新不支持按照对象更新,用个 hibernate 之类的库配合就行。 | 
|  |      97wackyx1996      73 天前 大胆猜测 评论区应该只有用过 laravel 和没用过 laravel 两类人 | 
|  |      98XCFOX      73 天前 @accelerator1 #63 Sequelize 研发的时间过于早了,Sequelize 刚开始发布的时候 TypeScript 还没有知名度。时至今日 Sequelize 对 TypeScript 的支持算不上好。我觉得将 Sequelize 是为 `TypeScript ORM` 是有点牵强的。 另外 Sequelize 在各个 benchmarks 中性能稳定垫底: https://orchid-orm.netlify.app/guide/benchmarks.html | 
|      99dreampursuer      73 天前 Grails | 
|  |      100simo      73 天前  1 问题应该改下:列举下你用过(每种至少两个中型及以上完整项目开发经验)的框架和 orm ,最少 3 种,从好到差,依次排序(无任何歧视,3 种以下,不要回复) 有人只用过一个,最好最差都是这个 |