jOOQ类型安全数据库查询教程

课程大纲

SQL是用于关系数据库查询的功能强大且表达能力强的语言。 SQL已建立,标准化并且几乎不受其他查询语言的挑战。 但是,在Java生态系统中,自从JDBC以来,几乎没有采取任何相关的措施来更好地将SQL集成到Java中。 在更高级别上,所有关注都集中在对象关系映射和语言抽象上,例如OQL,HQL,JPQL,CriteriaQuery。 同时,这些抽象已经变得几乎和SQL本身一样复杂,无论它们给无法修补生成的SQL的DBA带来的麻烦是什么。 jOOQ是填补这一空白的双重许可开源产品。 它在Java中将SQL本身实现为内部特定于域的语言,从而允许类型安全的构造和执行任意复杂度的SQL语句。 其中包括嵌套选择,派生表,联接,半联接,反联接,自联接,别名以及许多特定于供应商的扩展,例如存储过程,数组,用户定义的类型,递归SQL,分组集,数据透视表,窗口函数和许多其他OLAP功能。 jOOQ还包括一个源代码生成器,使您可以非常高效地在Eclipse等现代IDE中编译查询。

在SQL和特定关系数据库很重要的Java应用程序中,jOOQ是一个不错的选择。 当JPA / Hibernate抽象过多,JDBC过多时,这是一种替代方法。 它显示了一种现代的领域特定语言如何可以极大地提高开发人员的生产率,从而将SQL内部化为Java。 在本课程中,我们将看到如何使用jOOQ有效地查询数据库。

关于作者

Lukas是位于瑞士苏黎世的Data Geekery GmbH的创始人兼首席执行官。 自2013年以来,Data Geekery一直在销售围绕Java和SQL的数据库产品和服务。

自2006年在EPFL攻读硕士学位以来,Lukas着迷于Java和SQL的交互。 他通过各种变体(JDBC,Hibernate,主要是Oracle)在瑞士电子银行领域获得的大部分经验。 他在各种会议,JUG,内部演示和公司博客上分享他的知识。

经验教训

在本课程中,我们将讨论如何通过创建示例项目来开始使用jOOQ,H2和Maven。

jOOQ是一种DSL(领域特定语言),它模仿Java API中的标准和特定于供应商的SQL语法。 作为内部DSL,Java编译器可以验证您的SQL查询的语法正确性(例如,SQL关键字的正确顺序)。 使用表和列作为生成的Java对象,编译器还可以验证元数据的正确性(例如,正确的列名和类型)。 在本课程中,我们将深入研究jOOQ DSL,并使用谓词,语句和构建表达式。

在本课程中,我们将了解如何对Active Records执行CRUD。 编写CRUD既无聊又重复,这就是为什么像Hibernate这样的ORM出现并成功提高开发人员生产力的原因。 但是,当您经常只想对表中的单个记录进行操作时,Hibernate对您的体系结构进行了许多假设(和限制)。 jOOQ知道“活动记录”或UpdatableRecords,可以将其装入“特殊”种类的SELECT语句,然后在内部跟踪脏标志。 我们将学习如何执行简单的活动记录操作以及如何使用乐观锁定。

在本课程中,我们将比较jOOQ与JDBC。 JDBC通常因冗长而受到批评。 JDBC也因选择了错误的“默认值”而受到批评,例如,默认的结果集的延迟实现。 我们将看到jOOQ如何改进对检查异常,结果集,Prepared语句和带有结果集的语句的批评。

在本课程中,我们将学习生命周期管理对象如何与jOOQ交互。 有多种SPI(服务提供商接口),可用于管理jOOQ中各种实体的生命周期。 可以通过配置对象注入这些SPI。 我们将看到如何使用ConnectionProvider,在特定的SQLDialect上下文中jOOQ如何生成和执行SQL语句,以及如何使用Settings向jOOQ提供有关常规查询呈现和执行行为的信息。

请确保转发此消息,让您的社交粉丝知道!

翻译自: https://www.javacodegeeks.com/2015/09/jooq-type-safe-db-querying.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值