与JDBC+tests相比,JOOQ有什么优势?
在JDBC中,您可以直接用代码编写SQL查询,使用JOOQ我们调用方法,因此JOOQ在默认情况下速度更慢。
在JOOQ中,犯错误很难,但也不是不可能的。这个错误可以在测试中发现,使用JOOQ,您也应该编写这些测试,因此,这里对JOOQ没有好处。
发布于 2017-02-13 15:17:19
我完全同意你的看法。无论您使用的是“动态语言”(SQL作为外部DSL,例如JDBC)还是“静态语言”(SQL作为内部DSL,例如jOOQ),测试总是更好。
但更重要的是
您似乎只触及了jOOQ可以为您做的事情的表面。当然,类型安全的嵌入式SQL是一个很好的特性,但是一旦您有了这个特性,您就可以免费获得(列表还远远不够详尽):
INSERT、UPDATE、DELETE语句。jOOQ的UpdatableRecord大大简化了这一点,同时提供了如下内容:RecordListener
ExecuteListener的简单SPI,它允许您连接到各种JDBC交互步骤,包括:
VisitListener生成。这可能是非常有用的,例如,实现强大的东西,如行级安全性。SQLData等)
当然,您可以免费获得您提到的编译时类型安全性(以及IDE自动完成)。如果您不想完全使用jOOQ提供的内部DSL,仍然可以使用普通SQL,然后以一种非类型的安全方式使用jOOQ的API (它仍然有大量的特性):
// Just one example: CSV exports
String csvExport =
ctx.fetch("SELECT * FROM my_table WHERE id = ?", 3)
.formatCSV();TL;DR:
免责声明:
(当然,这个答案是有偏见的,因为我在jOOQ背后的公司工作)
https://stackoverflow.com/questions/42206874
复制相似问题