JOOQ&DSL

​ 为了更”懒”一点,程序员们发明了各种ORM框架,从繁琐的SQL中解放了出来,但产生的副作用便是需要学习一套的对象和关系映射的API,再加上一堆的XML配置或是感觉不那么舒服的注解。

​ 相比开发中主流的ORM开发框架Hibernate、MyBatis/MyBatisPlus, JOOQ(Java Object Oriented Query), 是一个不那么广泛应用的ORM&DSL(Domain Specific Language)框架。

​ 使用它必定有强大的理由,也就是说JOOQ解决了哪些开发中的哪些痛点,长时间以来我们使用Hibernate/MyBatis来服务开发中的数据查询、持久化等功能,虽然都能在一定程度上提升生产率,让开发人员专注于业务,但在实践中复杂且并不易维护的XML配置让人抓狂,复杂的判断逻辑操作几乎需要纯手工打造。那么使用JOOQ的理由便正如它官网(jooq.org)上的那句:

Our customers spend most time on their business-logic.
Because jOOQ takes care of all their Java/SQL infrastructure problems.

JOOQ的优点:
  1. Database First:数据库优先,和MyBatis一样提供灵活的不隐藏SQL的方式,用Java代码的风格编写SQL语句
  2. Typesafe SQL:将SQL建模为内部DSL,并使用Java编译器编译SQL语法、元数据和数据类型
  3. Code Generation:它从数据库元数据生成Java类。当代码与模式不同步时,Java编译器会告诉你
  4. Active Records:允许你直接在ActiveRecords上执行CRUD和POJO映射,这些ActiveRecords也是由代码生成器生成的
  5. Multi-Tenancy:允许你在运行时配置数据库模式和表覆盖,还支持行级安全性
  6. Standardisation:将常见的SQL表达式转换为数据库中最接近的匹配。编写适用于所有数据库的SQL
  7. Query Lifecycle:让你的程序与它的SQL生成生命周期挂钩,用于日志记录、事务处理、ID生成、SQL转换等
  8. Procedures:允许你将存储的函数调用嵌入到SQL语句中
jOOQ的缺点:
  1. 对开源数据库免费,对商业数据库收费

一系列的总结记录jOOQ使用方法,以便查询