Java:JOOQ持久性框架性能和反馈

Vla*_*sny 26 java persistence sqlbuilder jooq

偶然发现了一个很好的SQL构建器框架,名为JOOQ.BTW,俄语JOOQ听起来像名词意思是"虫子"(作为昆虫),"甲虫";)

如果您对JOOQ有任何反馈,那就是性能等,请分享.有关JOOQ的博客链接也很受欢迎.

Vla*_*sny 32

我想我也应该在这里回答因为我在一个半月前开始使用jooq所以我有一些经验.

我想使用像jooq这样的工具,因为:

  • ORM在我当前的项目(集群的分布式计算平台)中是一种矫枉过正,因为我只需要从db中读取和写入单独的字段,而不是完整的表行,而且我的一些查询非常复杂,不能由简单和轻量级的ORM执行.
  • 我希望我的查询语法自动完成,这样我就不需要记住整个数据库了
  • 我希望能够直接在Java中编写查询,以便编译器可以检查构建时的基本查询语法.
  • 我希望我的查询是类型安全的,这样我就不会意外地传递一种类型的变量,而另一种类型的变量是预期的.
  • 我想要SQL,但我希望它非常方便易用

好吧,有了jooq我就能实现这一切.我的主要要求是jooq处理足够复杂的查询(嵌套,分组等).这已经实现了.

我还希望能够使用尽可能少的代码行运行查询,并且能够使用jooq fluent API实现这一点,这允许类似jquery的调用来执行SELECT.

在使用jooq时,我报告了一两个错误,我必须说,它们的修复速度非常快.

我也错过了一些功能,我必须说,我已经拥有了几乎所有功能.

我非常喜欢的是,jooq现在使用SLF4J报告一些非常有趣的数据,这些数据是关于它的性能以及输出它构建的实际查询.它真的帮助我调试.

Jooq甚至为存储过程,UDF和可更新记录集生成Java工件,但我目前还没有使用它们.

重要的是,jooq透明地支持DB2,Derby,H2,HSQLDB,MySQL,Oracle,PostGreSQL,SQLite,SQL Server,Sybase SQL Anywhere.我认为相当广泛的清单.

Jooq 在Google小组中有支持论坛,Lukas白天和黑夜都准备好回答我最愚蠢的问题.

Jooq支持Maven,这对我来说是一个很大的安慰,因为我的所有Java项目都是基于Maven的.我们仍然想念发电机的Maven插件,但这并不重要,因为运行发电机是件小事.

用jooq写我的查询我突然发现,它们变得非常便携,因为我几乎从不在代码中使用任何特定于MySQL的功能,因为jooq试图尽可能地移植.对于那些不能忍受这种特殊性的人,我知道对SQL扩展的支持也在其中.

从我的角度来看,jooq缺乏什么?

好吧,SELECT之外的语句没有流畅的API.这会使代码变得复杂,并使UPDATE/DELETE语句的编写变得复杂一些.但我认为这很快就会加入.刚刚在1.5.9中实现!哈!对我来说太快了;)

还有一件事.Jooq有一本很好的手册,但......我不知道.可能是我只是不理解它的结构或架构...当我第一次开始使用jooq时,我打开了一页接一页寻找我需要的功能.例如,尝试猜测,在描述jooq手动 UPDATE和DELETE语句的位置,查看内容......但我相信这是非常主观的.从我的角度来看,我甚至无法解释手册有什么问题.我什么时候可以,我会发一两张票;)

由于Trac没有自动"这里,那里和后面"的链接,因此手册也不是很好的导航.

那么,对于我在莫斯科(俄罗斯)Trac页面也不会快速打开所以阅读手册有点无聊.

手册也错过了贡献者对jooq的良好架构描述.Jooq遵循按合同设计的原则,当我想通过在IDE中使用我常用的Ctrl-Click一些方法名称来学习如何实现某些功能时,我最终进入了一个没有实现的枯燥界面;)不是那样的我太聪明了,不能立刻开始改进jooq,但我当然很乐意了解jooq是如何从一开始构建的.

遗憾的是,我们无法为jooq手册做出贡献.我预计它会出现在某种维基中.

我还希望改进的是报道新闻的方式 .我更喜欢链接到那里的手册或示例这个或那个新功能如何工作.

手册中的发行说明链接实际上只是一个路线图.我想,明天我会做那个......

Jooq目前也有相对较小的社区,但我很高兴地报告它不会影响代码质量或新功能的引入方式.

Jooq真的是一个很好的项目.我也将坚持我未来的项目.我很喜欢.