不用写代码 APIJSON 3.5K Star 超第 2 大 ORM 库 Hibernate

2018-11-14 10:54:07 +08:00
 TommyLemon

https://www.timqian.com/star-history/#TommyLemon/APIJSON&hibernate/hibernate-orm

众所周知,Hibernate 是 Java 的第 2 大开源 ORM 库,从 2007 年开源到现在已经有近 12 年的历史。
廉颇老矣,尚能饭否? 长江后浪推前浪,一代新库换旧库。

为什么 APIJSON 从 2016 年 11 月开源后短短 2 年就超过它了呢?
因为 APIJSON 是自动化的,后端不用写代码,就能自动解析前端传的 JSON 参数,
自动转为 SQL 语句并连接数据库执行,然后返回对应的 JSON 结果,
期间自动校验权限、数据、结构,自动防 SQL 注入。

对于前端

对于后端

多表关联查询、结构自由组合、多个测试账号、一键共享测试用例

自动生成封装请求 JSON 的 Android 与 iOS 代码、一键下载自动生成的 JavaBean

自动保存请求记录、自动生成接口文档

一键自动接口回归测试,不需要写任何代码(注解、注释等全都不要)

目前 APIJSON 的生态已初具雏形:

* APIJSON 接口工具:      https://github.com/TommyLemon/APIJSONAuto
* APIJSON -Java 版:      https://github.com/TommyLemon/APIJSON
* APIJSON - C# 版:      https://github.com/liaozb/APIJSON.NET
* APIJSON - PHP 版:      https://github.com/orchie/apijson
* APIJSON -Node 版:      https://github.com/TEsTsLA/apijson

创作不易,GitHub 右上角点 ⭐Star 支持下吧,谢谢 ^_^

https://github.com/TommyLemon/APIJSON

8560 次点击
所在节点    开源软件
73 条回复
ooonme
2018-11-15 11:00:30 +08:00
@AllOfMe @TommyLemon 这种东西在稍微正式一点的项目中没有任何用处,另外我说的是大部分互联网小作坊项目,没有说 apijson,然后不要跟 hibernate 比较,代码质量比你高出不知多少,hibernate 只是一个库。一般情况下,另外就抽象能力来说,业务开发 < 框架开发 < 库开发。而一个好的库想要满足大部分场景就要知道什么功能该丢掉,你这个 apijson 只是一堆胶水代码而已,用 @AllOfMe 的说法就是一个脚手架,跟 hibernate 这种级别的项目比还差太远
sunzhenyucn
2018-11-15 12:01:29 +08:00
@ooonme
Star 真的在目前的 Github 的上代表不了什么,Hibernate 近 1w 多的 commits,Github 上 343 位 contributors,建议 owner 想营销自己的 project 还是换一个噱头吧(这样的标题真的容易被喷
另外 APIJSON 这个项目英文版文档里参杂着中文是什么鬼?
sunzhenyucn
2018-11-15 12:02:13 +08:00
@ooonme emmm... 貌似回复错人了 建议层主别介意
nyaapass
2018-11-15 12:11:27 +08:00
一直好奇 lz 是不是写了个爬虫,各大网站里只要一出现“接口、API、GraphQL、前后端撕逼”之类的帖子就会被召唤出来
TommyLemon
2018-11-15 12:18:11 +08:00
@ooonme
请问你说的 稍微正式一点的项目 能不能具体描述下它的规模(项目类型、表数量、记录数、开发人员配置等)?
同样是 Java 的 ORM 库为啥不能比?
Hibernate 代码质量比 APIJSON 高,这点我是承认的,但 APIJSON 的代码质量我自认为也是超过平均水平的,
不服的话,用阿里的 P3C 规范对比下? github。com/alibaba/p3c

“一个好的库想要满足大部分场景就要知道什么功能该丢掉” 我也认同,
所以 APIJSONLibrary 是围绕 ORM 这个核心做的,加了一个必要的自动化权限控制(对于 APIJSON 这种),
其它说的功能要么是 Demo 提供的,要么是生态内的其它开源库或工具提供的(自动生成文档与代码、自动回归测试等),
并不是贪大求全、无所不包。

“你这个 apijson 只是一堆胶水代码而已”,真不知道你是对 APIJSON 偏见有多大,才草率得出这种结论,
APIJSONLibrary 和 Hibernate 一样都是把 对象 转为 SQL 的 ORM 库,
APIJSONLibrary 对象是用 JSON,Hibernate 对象是用自定义的 POJO,
本质都是一样的,只不过 JSON 可以从前端动态传过来,POJO 只能后端提前写死,
居然就被你说成了“胶水代码”,这么说 Hibernate 不也是“胶水代码”?

“跟 hibernate 这种级别的项目比还差太远” 得具体看哪些方面吧,
从代码量上来看:
APIJSONLibrary 只有 49 个 java 文件
hibernate-core 有 3343 个 java 文件
确实“差太远”,但这不正是 APIJSON 的巨大优势?
代码越少 bug 越少。更何况支持的数据库功能也没有大的差距。

从使用上来讲:
用 APIJSON 可以通过自动化 API,不用后端写代码;
用 Hibernate 得每个接口都要 封装 POJO,及调用它的方法或写注解 等一大堆代码。

APIJSON 支自动化持关联查询(参数里加一个引用赋值键值对)和自动化 JOIN(参数里加一个 join 键值对),后端自动化解析不用写代码;
Hibernate 得写注解来实现关联,或分次调用代码,写一堆代码,不直观也不好开发和维护。
所以这方面反而是 Hibernate 比 APIJSON “差太远”。

APIJSONAuto,自动化接口管理平台,自动生成文档与注释、自动生成代码、自动化回归测试(机器学习)、自动静态检查等。
http://apijson。org
TommyLemon
2018-11-15 12:25:46 +08:00
@sunzhenyucn
再次强调,Star 在比较大的程度上反映 Repo 在开源社区的受欢迎程度,在同种类库(例如 ORM )间对比很有意义。
“ Hibernate 近 1w 多的 commits,Github 上 343 位 contributors ”,
然而更受欢迎的 Mybatis 只有 2252 个 commits,112 个 contributors,你又怎么看?
github。com/mybatis/mybatis-3
APIJSON 也有 1307 个 commits,6 个 contributors。
github。com/TommyLemon/APIJSON

那部分是来不及翻译的,APIJSON 的绝大部分用户都是中国人,英文文档没有太过投入精力去维护,
还有你能看懂中文文档干嘛非要盯着这个小问题找茬? 当然毕竟也是问题,后续抽时间解决吧。
TommyLemon
2018-11-15 12:26:50 +08:00
@nyaapass 不会写,暂时也没兴趣去爬数据
aheadlead
2018-11-15 12:29:56 +08:00
楼主的东西好坏不知道,不是相关开发者。
倒是楼主的宣传方式要改进。
现在我在各帖子里看到“创作不易”这四个字就感觉烦人。
TommyLemon
2018-11-15 12:33:04 +08:00
@aheadlead 这句话是反复修改过 10 次以上的,多次实践证明效果很好,当然我也会不断思考和改进,如果你有更好的建议欢迎提出,谢谢
kran
2018-11-15 13:14:53 +08:00
了解了您的作品和 gql 后,想知道为什么不基于 SQL 解析器做些事情?
xgfan
2018-11-15 13:17:51 +08:00
@aheadlead
LZ 几十页回复,基本都是这一套话术。
都开始用『。』来代替『.』了,以躲避 v 站的反 spam 策略。

@nyaapass
但是我们可以很轻易地 follow LZ
https://www.google.com.hk/search?q=Github+Star+%22%E5%88%9B%E4%BD%9C%E4%B8%8D%E6%98%93%22
vinsa
2018-11-15 13:22:39 +08:00
虽然看起来很不错,但把 Hibernate 拉进来强行比 star,会丢分。不一个维度的东西。
chinvo
2018-11-15 14:34:36 +08:00
和 parse 的思路好像差不多
TommyLemon
2018-11-15 14:42:38 +08:00
@xgfan 链接主要是用来说明自己的论点,我又不像某些网友随口说出没有依据的话。
能直接点最好,不能的话,改下格式,起码大家还能复制粘贴到浏览器上打开。

话说作为一个开源项目的作者,希望别人 Star 自己的 Repo 有什么奇怪的吗?
至于用什么文字,不同的人有自己的风格也很正常啊。
你搜下 Github Star "支持一下" 照样一大堆结果
https://www.google.com.hk/search?q=Github+Star+%E6%94%AF%E6%8C%81%E4%B8%80%E4%B8%8B
TommyLemon
2018-11-15 14:44:02 +08:00
TommyLemon
2018-11-15 14:45:21 +08:00
@kran
你说的是前端传 SQL ?

解析 SQL 语法,再校验权限、结构、内容,最后再转回 SQL,
不说性能问题,真要这么好搞业内也应该有不错的开源方案了。

而且 SQL 不能直观地反映返回 JSON 的数据结构,
APIJSON 就能做到看请求知结果,所求即所得。

APIJSON 的 提取字段、远程函数 功能也不是 SQL 方案能方便地实现的。
还有 自动加注释、自动生成封装请求 JSON 的代码,用 SQL 方案实现也很困难,甚至根本不可能准确地实现。
TommyLemon
2018-11-15 14:47:21 +08:00
@vinsa
不知道你的维度指的是什么。APIJSON 和 Hibernate 都是 Java 的 ORM 库,拿来对比有什么奇怪的?
而且我发布 APIJSON 后,也有很多网友拿来和其它开源库( Hiberate,GraphQL, JPA 等)对比。
TommyLemon
2018-11-15 14:48:35 +08:00
@TommyLemon 甚至有些和 APIJSON 根本就不是同类的项目,例如 Swagger。
TommyLemon
2018-11-15 14:50:27 +08:00
@TommyLemon
这里只是一个地方,还有我发的一些博客下,我在 Gitee 开源的项目下,都有很多提到 Swagger 的。
github。com/TommyLemon/APIJSON/issues/27
chocotan
2018-11-15 14:51:14 +08:00
hibernate 实现了 jpa 规范,楼主你强行跟 hibernate 比会丢分+1

看了楼主的回复里一直在强调各方面都比 hibernate 牛逼

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

https://www.v2ex.com/t/507671

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

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

© 2021 V2EX