- 主题:几个 Java 数据库访问库的性能对比 zz
https://zhuanlan.zhihu.com/p/583456915代码质量度量,jOOQ, EclipseLink, DataNucleus 比较烂,慎用。jOOQ 的批处理操作性能超烂,七年了还修不好,EclipseLink是Oracle捐给Eclipse基金会的商业产品TopLink,DataNucleus基本是JDO的参考实现和唯一正经实现,JDO被JPA拱翻了,结合代码质量和性能看,苍蝇不叮无缝的蛋这句话挺有道理的……
--
FROM 124.64.121.*
MyBatis 比想象中的代码度量质量高,实际看代码,尤其是国人做的几个扩展,代码质量不太行。mybatis-plus还把单元测试代码隐藏了,也不知道是不是真的没有测试……
JDBI 和 Ebean 虽然小众,但是被严重低估了,代码质量高,性能超好,使用简单。btw, JDBI 也支持把 SQL 写到模版文件里。
- 来自 水木社区APP v3.5.6
【 在 joyfun 的大作中提到: 】
:
: 符合认知 mybatis用好了,还是比jpa有很大优势的
: 新,小项目 直接jpa
: 觉得sql能掌控 就mybatis
: 如果还不行就jdbc裸奔
--
FROM 221.222.20.*
你这个可以有的,jdbc 性能暴好,不要被学究老误导了,哈哈!
访问数据库的性能决定了绝大多数Java服务的性能,太重要了。
- 来自 水木社区APP v3.5.6
【 在 roy 的大作中提到: 】
: 这个说明性能其实没那么重要?
:
: 想起来几年前我写了个IDEA的插件,根据jpa的注解自动生成JDBC代码。然后攒了篇文章投稿给某期刊被拒,审稿人的意见是有了hibernate/mybatis,静态生成JDBC代码没有实际价值lol
--
FROM 114.246.97.*
JDBI是写 SQL 派,只是在参数绑定和结果集映射提供方便,Ebean支持很多风格,其ORM风格跟JPA类似,比JPA简单而且高效,很难得的。
另外,这么多库只有 Ebean 直接支持数据加密。
- 来自 水木社区APP v3.5.6
【 在 roy 的大作中提到: 】
: 不算低估吧,还是得写SQL
:
: 用ORM主要的目的不就是尽量避免拼SQL这种体力活嘛
--
FROM 114.246.97.*
没有公开,性能数据仅供参考。对测试代码感兴趣的话可以单聊。
- 来自 水木社区APP v3.5.6
【 在 oldwatch 的大作中提到: 】
: 是我没看到还是他没说
:
: 测试用例长啥样?
--
FROM 114.246.97.*
文章里有一段 jOOQ 代码,其它的都是类似的,代码本身不复杂,但是我混在工程里,懒得摘配置了,估计也没几个人关心源码。
单表,十一列,三列联合主键,行长大概在一百字节左右。压测的是批量写入性能,一共一百万行,每批一百行,开了事务,关了自动提交,默认事务隔离级别。
写的数据不大,用 H2 可以明显看出来 DB 库的 overhead,jOOQ尤其夸张,慢的吐血!
结合代码度量、代码规模、性能,JDBI 最佳,其次 MyBatis + MyBatis Dynamic SQL,然后是 Ebean 和 Hibernate,其中 JDBI 和 Ebean 名气很小,这里给它们吹一波,强烈推荐来踩坑,
对 Scala 不熟,这次没测试 Quill, Doobie, Scalikejdbc, Slick, Anorm 的性能,这几个库的代码量都很小。
另外今天用 SonarQube 测了下 r2dbc-mysql 和 jasync-sql,后者是 Kotlin 写的,一万行代码,但 Tech debts 只有一天多,不知道 Sonar怎么计算的,看代码复杂度指标确实每个文件都很低,不禁有点扭转我对 Kotlin 的偏见。
- 来自 水木社区APP v3.5.6
【 在 oldwatch 的大作中提到: 】
: 能说一下大致的场景不?
:
: 读/写/数据项规模?
--
FROM 221.222.20.*
无知者无畏,国外前几年有个统计,国外 Hibernate 用的最多,其次是 spring jdbc-template 和 jOOQ,国内最高是 MyBatis。 jOOQ 的口碑很高,那种函数风格的 DSL 大概它是头一拨,虽然我个人并不喜欢这个风格,它的 prepared statement的参数可以把参数直接写到置位符地方,这个挺有创意的。
国内搜知乎就可以看到有人用 jOOQ,我司也有少数项目用 jOOQ。如果你没听说就没价值,那你听说过 JDBI 和 Ebean么……
- 来自 水木社区APP v3.5.6
【 在 RuralHunter 的大作中提到: 】
: 这个什么jooq都没听说过,更没听说有人用,测它没啥意义。
--
FROM 124.64.16.*
你没看过吧,它代码好的话,MyBatis 那得是精品代码了。
jOOQ 最长的单文件包含 javadoc 三万多行,不算的话将近一万行,技术债也是最吓人的:
https://zhuanlan.zhihu.com/p/583456915具体到代码本身,实际看看就会发现代码写的很复杂,效率还很低,那个 batch 操作很低效,作者七年前就发现了,也一直在尝试改进,七年了还没搞定……自己整的太复杂了,自己都搞不定。
- 来自 水木社区APP v3.5.6
【 在 licy 的大作中提到: 】
: jooq源代码可以参考下,写的挺好的
--
FROM 124.64.16.*
等重写完估计公司也挂了
担心撑不住,又想要 JPA 的便利,可以上 Ebean 的。
- 来自 水木社区APP v3.5.7
【 在 jxSandy 的大作中提到: 】
: 如果用户少,就上jpa,如果稍微有点用户量,mybatis,如果用户量猛,jdbc自己来调优写
--
FROM 124.64.121.*