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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/358596.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中专计算机专业学c语言吗,中专计算机专业学什么 有哪些课程

计算机原理、计算机应用基础、计算机网络基础、CAD辅助设计、三维动画设计、VBSIC语言及程序设计PHOTOSHOP、Windows、网页设计、Office办公自动化、多媒体、计算机系统安装及维护管理、计算机病毒原理防范等。计算机专业就业前景计算机专业就业前景很好。随着现代经济和科技的…

教你玩转CSS表格(table)

目录 表格边框 折叠边框 表格宽度和高度 表格文字对齐 表格填充 表格颜色 表格边框 指定CSS表格边框,使用border属性。 下面的例子指定了一个表格的Th和TD元素的黑色边框: table, th, td {border: 1px solid black;}

实战|全程分析js到getshell

本篇转载于https://forum.butian.net/share/260 看到望海师傅的山理证书真滴好看,真想搞一本,刚刚入edusrc的时候收集了一波山理的子域资产,全部看了一遍都被大佬挖的干干净净了。没有内网VPN基本上挖不到,然后我就去公众号看了一…

教你吃透CSS的盒子模型(Box Model)

目录 CSS 盒子模型(Box Model) 元素的宽度和高度 浏览器的兼容性问题 CSS 盒子模型(Box Model) 所有HTML元素可以看作盒子,在CSS中,”box model”这一术语是用来设计和布局时使用。 CSS盒模型本质上是一个盒子,封装周围的HTML元素,它包括:边距,边框,填充,和实际内容…

多家防火墙设备存在信息泄露漏洞

概述 漏洞名称多家防火墙设备存在信息泄露漏洞安全通告发布日期2021-06-16受影响产品及版本胜鑫塔下一代防火墙XT6000-A-FW-1.0.0-0-2778 利谱第二代防火墙6164-1.5.2 任子行下一代防火墙SURF-NGSA-V-3000 中科网威下一代防火墙F6600L-1.5.2 任子行网络安全审计系统内置报表 网…

c语言 linker error,[Linker error] undefined reference to `prinf'的问题!

[Linker error] undefined reference to prinf的问题!环境为dev-cpp日志如下:编译器: Default compiler执行 gcc.exe...gcc.exe "E:\C\ran.c" -o "E:\C\ran.exe" -I"D:\Dev-Cpp\include" -L"D:\Dev-Cpp\lib"C:\…

独处可以激发思考的力量

如果你知道怎么独处的话,成大事者都是善于独处的人--在独处的过程中激发思考的力量。 自卑可以像一座大山把人压倒并让你永远沉默,也可以像推进器产生强大的动力。 比别人先走一步,能创造一种成功的心境。 在独处时&am…

教你玩转CSS border(边框)

目录 边框样式 border-style 值 边框宽度 边框颜色 边框-单独设置各边 实例 边框-简写属性 CSS 边框属性

从命令式功能到纯功能性,然后再返回:Monads与范围内的延续

这则影片随附此文章,没有它不会有太大意义 上个月,我在Curry On会议上做了演讲,该会议是与学术,编程语言会议ECOOP共同举办的新会议。 Curry On旨在弥合学术界之间的鸿沟。 我的学术兴趣不包括编程语言,我认为编程语言…

php boolean 全大写还是全小写,【PHP培训】PHP为什么大小写规则是如此不规则?

据 但还是建议使用统统敏感的写法,推荐大家始终坚持“大小写敏感”,遵循统一的代码规范,不定义大小相同的函数和方法。 一、大小写敏感 1.变量名区分大小写 所有变量均区分大小写,包括普通变量以及$_GET,$_POST,$_REQUEST,$_C…

c语言调用话筒的程序,c – OpenAL:如何创建简单的“麦克风回声”程序?

一个古老的问题,但这是一个答案.如果我们真的想要简洁,它肯定可以修剪,但这有点不到100条有效线:#include // OpenAL header files#include #include using std::list;#define FREQ 22050 // Sample rate#define CAP_SIZE 2048 // How much to capture at a time (a…

轶事奇语

---恢复内容开始--- Windows自带的记事本编辑文本时,如果使用utf-8编码的文件,会在每个文件开头添加一个值为0xefbbbf字符,会导致许多奇怪的问题,如网页第一行可能会显示一个"?", 或编译器报语法错误,等。U…

教你玩转CSS 轮廓(outline)属性

目录 CSS 轮廓(outline) 所有CSS 轮廓(outline)属性 CSS 轮廓(outline) 轮廓(outline)是绘制于元素周围的一条线,位于边框边缘的外围,可起到突出元素的作用…

单片机c语言参考文献最新,[2018年最新整理]10个单片机C语言实例.doc

[2018年最新整理]10个单片机C语言实例经典单片机实验帮你成功1. 闪烁灯1. 实验任务如图4.1.1 所示:在P1.0 端口上接一个发光二极管L1,使L1 在不停地一亮一灭,一亮一灭的时间间隔为0.2 秒。2. 电路原理图图4…

Web安全-伪静态网页

初步认识 “伪静态”顾名思义就是一种表面上看似是静态网页(以.html、.htm等结尾),不存在任何的数据交互,却其实是动态网页,存在数据交互的网站,具有这种特性的网页被称为“伪静态网页”。我们看到的伪静态…

2015.7.11js-10(无缝滚动)

1.实现原理:setInterval定时器,让某元素position的left属性定时滚动,使用到js中的元素的offsetLeft属性。 2.案例:1.css的实现是外div是4张图片的总宽度,设置relative然后overflow隐藏。子代有ul层设置为absolute;left…

教你玩转CSS margin(外边距)

目录 margin 可能的值 Margin - 单边外边距属性 Margin - 简写属性 所有的CSS边距属性 margin margin 清除周围的(外边框)元素区域。margin 没有背景颜色,是完全透明的。 margin 可以单独改变元素的上,下,左,右边距,也可以一次改变所有的属性。

某高校2006年招收学生3千人c语言,C语言程序设计例题

C语言程序课程设计任务书一、题目每个同学可从下列给出的参考题目中任选一题完成,也可以自选题目。1.完成一个学生成绩管理系统。内容描述:设计四个类:学生基本信息;成绩表;班级表;课程表(描述课程信息&…

j2ee 和 j2se_在J2SE应用中模拟CDI的会话和请求范围

j2ee 和 j2se我们目前正在考虑重构Naked Objects框架,以使用JSR-330(依赖注入)和面向EE的老大哥JSR-299(CDI)。 使用香草JSR-330是不费吹灰之力的,但是我们想利用JSR-299中的一些不错的功能(例如…

php双引号解析漏洞

1|0前言 在PHP语言中&#xff0c;单引号和双引号都可以表示一个字符串&#xff0c;但是对于双引号来说&#xff0c;可能会对引号内的内容进行二次解释&#xff0c;这就可能会出现安全问题。 条件&#xff1a;php版本>5.5 2|0正文 举个简单例子 <?php $a 1; $b 2; ec…