Skip to content

Latest commit

 

History

History
19 lines (15 loc) · 1.77 KB

File metadata and controls

19 lines (15 loc) · 1.77 KB

JOOQ(Java Object Oriented Querying)

什么是JOOQ?

  • 基于Java访问关系型数据库的工具包,它既吸取了传统orm操作数据的简单性与安全性,又保留原生sql的灵活性,它更像是介于ORMS和JDBC的中间层。它可以把数据库模型的基本信息,比如表名,字段名自动生成相应的Java类;并在此基础上提供了一整套数据处理的API。

JOOQ的优点

  • 数据库优先,它不提倡隐藏SQL;与Mybatis一样,以SQL优先,同时可以快速安全的编写SQL。
  • DSL(Domain Specific Language )风格,代码够简单和清晰。遇到不会写的sql可以充分利用IDEA代码提示功能轻松完成。
  • 类型安全的SQL,它支持列类型检查、行值表达式检查、SQL语法检查。保留了传统ORM 的优点,简单操作性,安全性,类型安全等。不需要复杂的配置,并且可以利用Java 8 Stream API 做更加复杂的数据转换。
  • 代码自动生成,自动生成一份Model类,不需要再手动维护它们。
  • SQL标准化,各个数据库方言存在很多细微差别,jOOQ可以自动进行转换
  • 支持区分不同环境,可以动态切换开发数据库、测试数据库等不同环境的数据库
  • 查询生命周期,jOOQ不尝试隐藏SQL,围绕整个生命周期开放了接口,我们可以做日志自定义,事件触发,SQL转换等处理。
  • 支持编写存储过程
  • 支持主流的RDMS(关系型数据库管理系统)和更多的特性,如self-joins,union,存储过程,复杂的子查询等等。
  • 丰富的Fluent API和完善文档。
  • runtime schema mapping 可以支持多个数据库schema访问。简单来说使用一个连接池可以访问N个DB schema,使用比较多的就是SaaS应用的多租户场景。