据我所知,MyBatis和jOOQ用于类似的情况。因此,我想知道什么时候应该在Spring应用程序中使用jOOQ over MyBatis,以及每个库和框架在开发时带来的技术优缺点。
如果有人已经精通使用像MyBatis这样的框架编写SQL查询,那么切换到jOOQ会给他们带来什么技术好处(查询运行时、编译时错误)?
发布于 2020-06-02 07:54:30
产品远景
据我所知,MyBatis的产品愿景是提供一种方法,在SQL语言之上使用它们的XML语法实现模板。目标是在外部文件中保持Java逻辑之外的SQL (可以在运行时替换SQL,例如向查询添加提示),并使用本机SQL。(jOOQ也能做到这一点,但它不是最宣传的功能)。使用普通SQL的优点显然是可以在数据库客户端中直接运行SQL,就像使用视图或存储过程一样。
jOOQ的产品愿景是通过将SQL实现为Java,并通过代码生成提供对数据库模式的类型安全访问,从而提供类型安全、嵌入式、动态SQL。这里的重点是使SQL逻辑成为Java逻辑的一部分,因为这将导致更好的类型安全性,从而提高质量。这样做的副作用是卖主不可知论 (您的SQL将在许多方言上运行)和非常容易的动态SQL。如果您有这些要求中的任何一个,选择是很容易的。
产品的其他特点
以上是各自产品的主要愿景,这会影响人们对它们的看法,但这并不妨碍这两种产品都有可能帮助您完成日常任务的附加功能。我对MyBatis还不太了解--最近它确实对动态SQL的内部DSL做了一些改进,就像jOOQ可以用于偶尔的模板一样。一组在MyBatis中的子产品可以在这里看到。
一些不太为人所知的jOOQ特性可能对您每天的工作都有直接的帮助,包括:
(免责声明:我为jOOQ背后的公司工作)
https://stackoverflow.com/questions/62144011
复制相似问题