V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
DelayNoMay
V2EX  ›  问与答

大家喜欢用纯 sql 还是 orm 框架?

  •  
  •   DelayNoMay · 2020-10-27 21:33:39 +08:00 · 2912 次点击
    这是一个创建于 1490 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我个人比较喜欢纯 sql,因为比较好调试,好优化,适应性强,换 orm 框架,换语言后不用重新学习。最近我 leader 把我的纯 sql 改成了 orm 形式,说实话有点不爽

    11 条回复    2020-10-28 09:13:26 +08:00
    2kCS5c0b0ITXE5k2
        1
    2kCS5c0b0ITXE5k2  
       2020-10-27 22:06:14 +08:00
    人生苦短 我用 orm 。sql 一长看起来烦死了
    zoharSoul
        2
    zoharSoul  
       2020-10-27 22:07:29 +08:00
    sql + mapping,
    手动映射太费劲了. 还是自动的..
    orm 写 sql 要学不少东西, 不如直接 sql 门槛低一点
    blless
        3
    blless  
       2020-10-27 22:19:20 +08:00 via Android   ❤️ 1
    sql 注入了解一下,用框架不一定是为了省事
    tairan2006
        4
    tairan2006  
       2020-10-27 22:31:15 +08:00
    更喜欢 mybatis-plus 这种…复杂的直接写 sql,简单的代码里搞定
    yyss8
        5
    yyss8  
       2020-10-27 22:42:53 +08:00 via iPhone
    不用 orm 但至少用 query builder 类的框架 至少不用担心 sql 注入之类的问题
    有些语句复杂的 大部分 query builder 也支持用 raw sql
    CEBBCAT
        6
    CEBBCAT  
       2020-10-27 23:23:46 +08:00 via Android
    @blless 在用 go,SQL 都是先 prepare 再 exec 的,这样不就可以防止注入了吗?望赐教
    blless
        7
    blless  
       2020-10-27 23:40:57 +08:00 via Android
    @CEBBCAT 你可以认为 orm 多了一层参数验证,至少要和参与查询的结构体绑定。顺便也 sql 结果解码成内存对象,省事
    msg7086
        8
    msg7086  
       2020-10-28 00:43:57 +08:00
    纯 SQL 没什么问题,只要不拼参数就没事。
    但是 ORM 比较方便自动优化,比如框架里可以根据参数做缓存,或者表连接给你智能拆分成多条查询等。
    当然如果你们公司提倡加班,那自己花时间手动优化也不是不行……
    我反正是懒,能让代码做的事情绝不浪费自己的时间。
    labulaka521
        9
    labulaka521  
       2020-10-28 07:29:32 +08:00 via iPhone
    用 sql 需要十行代码,而用了 orm 框架只需要三四行。
    我正在把一个项目的的数据库查询由纯 sql 改成 orm 来查询,真的不需要写很多代码,尤其在查询很多次时,真的很方便 前面有人说换了语言后要重新写,每个语言的优秀 orm 框架就那个几个,学习新语言的时候顺便看看,了解一下 就好了呀,人生苦短,我用 orm 。
    nutting
        10
    nutting  
       2020-10-28 09:09:59 +08:00
    orm 有个问题你们怎么搞的,就是控制器接受入参,往往就直接用数据 entity 类了,我觉得这个做法很危险啊,被人知道可以篡改数据,加点限制条件也很繁琐啊。但是如果再定义一个 vo 类入参,set 到 entity 存储 是不是有点累赘,好像只能这样做?
    nutting
        11
    nutting  
       2020-10-28 09:13:26 +08:00
    发现项目里很多人偷懒就前者方案了,可能需求往往就是 CRUD 这样方便,又是不面向公众的系统总觉得安全性次之,很危险吧
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3367 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 780ms · UTC 11:27 · PVG 19:27 · LAX 03:27 · JFK 06:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.