jOOQ初体验

jOOQ是一款java版ORM框架,有着Mybatis的灵活度,比Hibenate更丰富的面向对象API,重要的是没有学习门槛。

如果已经厌倦了Mybatis拼写的脆弱和僵硬的映射,和学院派十足的Hibernate,是时候换换新口味了。jOOQ所有的数据库操作都基于Java API,不需要配置文件,也不用大量注解(Annotation)来辅助,只需在项目中引入相应的Maven插件,生成一部分Java文件,就可以进行数据库操作了。

先通过一段代码感受一下jOOQ畅快的操作,jOOQ示例代码

这就是jOOQ的特点,把SQL结构化查询语言,通过面向对象的方式分解后组合使用,不仅没有增加学习成本,还能与SQL语法卓有成效的结合起来,安全方面也是jOOQ的拿手好戏。

jOOQ的Maven配置

jOOQ的配置相对比较简单,只需引入jOOQ官网提供的3个jar包,和一个Maven插件,配置工作基本就完成了一半。

<groupId>org.jooq</groupId>

<artifactId>jooq</artifactId>
<artifactId>jooq-meta</artifactId>
<artifactId>jooq-codegen</artifactId>

以上就是jOOQ三个Maven依赖包,具体可参考jOOQ官网示例:

https://www.jooq.org/doc/3.11/manual-single-page/#jooq-in-7-steps-step1

配置jOOQ代码插件

在pom.xml中添加plugin节点,在节点中加入jOOQ官方提供的Maven插件:

<groupId>org.jooq</groupId>
<artifactId>jooq-codegen-maven</artifactId>

具体可以参考spring官网给出的部分jOOQ示例:

https://docs.spring.io/spring-boot/docs/2.0.3.RELEASE/reference/htmlsingle/#boot-features-jooq

Spring官方和jOOQ文档中给出的简要示例,显然并不适合新手,通过这些碎片示例拼接一个完整的Demo,大多时候是在浪费时间,如有需要可以参考 jOOQ Maven配置完整示例

通过引入jOOQ的Maven依赖,及jOOQ代码生成插件,基本就完成了jOOQ的配置。如果数据库中已经有表存在,直接运行maven的打包或安装命令,进行jOOQ相关代码的生成,前提是已经在pom.xml的plugin节点中,正确配置了数据源,并指定了代码生成目录。

在Maven命令执行成功后就能看到,指定目录下生成的java文件,这些java文件都是根据数据库中的表结构生成的,是jOOQ操作数据库的关键所在,所以当表结构有变化时,要重新进行打包操作。

通过官网的说明文档并结合以上示例的说明,相信应该对jOOQ有了初步的了解。jOOQ并非是完美的产物,有过jOOQ实践的朋友可能会感受到这一点,层层嵌套的括号配对问题,真的是很需要眼力。如果做的是通用编程,这一点成本与它的灵活性相比,还是很值的。