jOOQ星期二:Vlad Mihalcea深入了解SQL和Hibernate

欢迎来到jOOQ Tuesdays系列。 在本系列中,我们每隔一个月的第三个星期二发布一篇文章,从jOOQ的角度采访我们发现该行业令人兴奋的人。 这包括从事SQL,Java,开放源代码以及其他各种相关主题的人员。 vlad_mihalcea

我们很高兴在第三版中与Vlad Mihalcea交谈,他将向我们介绍开发人员在使用Java,SQL和Hibernate时需要掌握的技能。

嗨,弗拉德(Vlad)-您的博客爆满了有关Hibernate的精彩文章。 看起来您喜欢深入研究市场上最流行的持久性API,对吗?

我的意思是说“教学是我的学习方式”并掌握某种技术时,您必须超越参考文档。 Hibernate已经存在了十年,并且在其之上构建了许多项目。 Hibernate大师课程侧重于一些经过验证的ORM设计模式,例如并发控制,缓存和批处理。

您最近告诉我您已经意识到我们行业中缺乏SQL洞察力。 怎么会这样?

在访问数据时,对象关系不匹配只是冰山一角。 我们在企业系统中面临的最大问题是企业数据库开发人员不匹配。

开发人员了解编程语言,设计模式和应用程序架构,但是数据库技能始终归功于数据库管理员角色。 这是一个非常危险的假设。

好像我们是在Linux上进行开发,而又不想完全依靠系统管理员的知识来学习操作系统的工作方式一样。 如果您开发企业应用程序,那么您除了学习数据库的工作原理之外,别无选择。 阅读出色的《 SQL Performance Explained 》一书,使我意识到对关系数据库系统的内部工作了解甚少。 本书仅供开发人员使用,是每位企业开发人员的必备读物。

我们该如何改善行业状况? 是否有可能更紧密地集成JPA和SQL? 还是具体地说,是Hibernate和jOOQ?

首先,这是需要改变的心态。 我们需要承认,没有一个“一刀切”的框架,它也适用于数据库访问。 当我编写单元测试时,我并不局限于JUnit。 我也使用Mockito和Hamcrest,测试堆栈是更好的选择。

JPA在写入数据时表现出色,因为只要持久性模型发生更改,您就可以自动更新INSERT / UPDATE语句。 隐式和显式锁定使我们能够防止丢失更新,尤其是在长时间对话的工作流中。

但是,虽然抽象SQL写语句是一个可行的任务,但是在读取数据时,没有什么能比原生SQL更好。 最常用的RDBMS已经实现了非标准的数据访问技术(窗口函数,公共表表达式,PIVOT),而SQL-92 JPA抽象层只能专注于公共功能。 这就是为什么在几乎所有企业系统上都不可避免地进行本地查询的原因。

jOOQ在将SQL知识推广到Java生态系统方面做得非常出色。 Java统治着企业软件开发,而SQL技能一直是大多数企业开发团队的致命弱点。

虽然您可以从JPA触发本机查询,但不支持动态本机查询构建。 jOOQ允许您构建类型安全的动态本机查询,从而增强应用程序抵抗SQL注入攻击。 正如我已经在博客中证明的那样,jOOQ可以与JPA集成,并且JPA-jOOQ组合可以提供可靠的数据访问堆栈。

告诉我们一些有关您的Hibernate Master Class和您个人博客策略的信息。

Hibernate Master Class博客系列实际上是一本正在编写的书。 因为我从事全职工作,所以很难按照固定的写作时间表进行写作,所以我只能在业余时间允许的范围内写作。

涵盖了所有主题之后,我将按照“ SQL Performance Explained”示例将所有这些信息转变成一本书,由我自行出版。

五年后你会在哪里?

我既喜欢软件体系结构,也喜欢写作。 我将继续这一旅程,看看风将把我带到哪里。

翻译自: https://www.javacodegeeks.com/2015/04/jooq-tuesdays-vlad-mihalcea-gives-deep-insight-into-sql-and-hibernate.html

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

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

相关文章

GitHub初次使用记录(一)

1、从GitHub上克隆或者复制别人的档案库: 克隆档案库时需要打开本地Git客户端(比如GitHub for Windows 和 GitExtesnsion )操作。 下面是用GitExtension克隆档案库: 转载于:https://www.cnblogs.com/lxf1117/p/4140048.html

java集成_Java继承

一.继承1.简介:特点:利于代码复用;缩短开发周期。注:子类不能直接访问父类的私有属性满足“A is a B”的关系就可以形成继承关系例:父类:1 packagecom.swpu.animals;23 public classAnimal {4 //属性5 priv…

java猜数字小游戏_Java实现简单猜数字小游戏

本文实例为大家分享了Java实现猜数字游戏的具体代码,供大家参考,具体内容如下完成猜数字游戏需要实现以下几点:获得一个随机数作为“答案数”; 输入数字,与“答案数”作比较(判断大了,小了,相等…

java软件工程师 英文简历_2017java程序员英文简历范文

2017java程序员英文简历范文简历写完以后,再检查一下你的简历是否回答了以下问题:它是否清楚并能够让雇主尽快知道你的能力?是否写清了你的能力?是否写清了你要求这份工作的.基础?有东西可删除吗?尽力完善你的简历直到最好。2017java程序员英文简历范…

写给java web一年左右工作经验的人

摘要 大学就开始学习web,磕磕绊绊一路走过来,当中得到过开源社区很多的帮助,总结了这些年来的技术积累,回馈给开源社区。 ps:图片都是从网上盗。。。感谢原作者。 ps:文字千真万确都是我自己写的。 在此&am…

FlexyPool如何支持Dropwizard Metrics包重命名

介绍 FlexyPool严重依赖Dropwizard (以前是Codahale)度量标准来监视连接池的使用情况 。 集成到Dropwizard中后,程序包名称必然会被重命名 。 因此,4.0.0版本将使用io.dropwizard.metrics软件包名称代替com.codahale.metrics 。 …

嵌入式Linux学习笔记

一 嵌入式系统定义: 应用于特定环境的硬件体系。 二 两样非常重要的能力: 1. 掌握各种新概念的能力 2. 调试的能力( 包括软件, 硬件 ) 三 需要的基础知识: 1. 操作系统理论基础 2. 数据结构 3. C,C编程语言 4. 汇编语言 5. Linux基…

java string 内存占用_JVM系列之:String,数组和集合类的内存占用大小

简介之前的文章中,我们使用JOL工具简单的分析过String,数组和集合类的内存占用情况,这里再做一次更详细的分析和介绍,希望大家后面再遇到OOM问题的时候不再抱头痛哭,而是可以有章可循,开始吧。数组先看下JOL的代码和输…

maven osgi_OSGi将Maven与Equinox结合使用

maven osgi很长时间以来,我一直在努力理解OSGi的真正含义。 它已经存在很长时间了,但是没有多少人意识到这一点。 它被炒作是一种非常复杂的技术。 这是我为所有Java开发人员简化的尝试。 简而言之, OSGi是一组规范,这些规范支持模…

python中、文件最重要的功能是( )和接收数据_Python基础语法14个知识点大串讲

来源:Python数据之道Python基础语法大串讲Python 是一门面向对象的编程语言,相信这篇文章对于初学者而言应该会有一个比较大的帮助,下面我们将 Python 中常用的基础语法和函数做了一个汇总,满满的干货,供大家学习。1、…

hadoop简单介绍_Hadoop:简单介绍

hadoop简单介绍什么是Hadoop: Hadoop是用Java编写的框架,用于在大型商品硬件群集上运行应用程序,并具有类似于Google File System和MapReduce的功能 。 HDFS是一个高度容错的分布式文件系统,与Hadoop一样,旨在部署在低…

java mvc 案例_springmvc经典案例

本想自己写一下总结,但是发现一篇好文,转发一下,日后自己再做补充;感谢Sunnier,引自:https://www.cnblogs.com/sunniest/p/4555801.htmlSpringMVC学习笔记----一、SpringMVC基础入门,创建一个He…

java泛型方法无参_从头再来:Java泛型(开发必须知道的)

Java泛型老规矩,测试一下,下面的程序能否正常运行?为什么?开头测试题泛型就是实现了参数化类型,也就是代码可以适用于多种类型。泛型是在编译期检查的,在编译期检查类型是否安全。我认为泛型最有用的就是和…

几种常见模式识别算法整理和总结

这学期选了门模式识别的课。发现最常见的一种情况就是,书上写的老师ppt上写的都看不懂,然后绕了一大圈去自己查资料理解,回头看看发现,Ah-ha,原来本质的原理那么简单,自己一開始仅仅只是被那些看似formidab…

fastd java下载_FastReport VCL报表控件

FastReport VCL报表控件是著名的 Delphi 打印控件。含全部源码。支持 Delphi 10.2 Tokyo,FastReport可以在大量的方式报表的创建过程中操纵对象。快速发展的报表和随后的打印,这样的优点,正如预览打印文档的外观。专业版除了报表标准版的功能…

#102030:在30天内运行20 10K来庆祝Java的20年

1995年5月23日是技术史上的重要时刻。 业界似乎并没有意识到当天发布的语言会在未来几年内完全改变技术的格局。 Java将在今年的同一天庆祝20岁生日。 Java 20年,哇! 回顾20年前的存储器时代,思考一下Java的发明时间/方式。 万维网专用于精…

View 的 android:visibility属性的讨论

Android VIEW 中的 visibility 属性,在API中的描述为:Controls the initial visibility of the view. [控制VIEW的初始可见性]。 其中包含三个参数: * 默认值为visible,可见。这里需要注意的是 "invisible" 和 "go…

JQuery-Dialog(弹出窗口,遮蔽窗口)

在Ajax中经常用到的弹出窗口和遮蔽窗口。自己写肯定是一个最佳方案,但时间和成本上,还是决定了寻找现成的吧。大概罗列一下。需要我满足我几个条件 一定要简洁方便拥有遮蔽功能,Model Dialog ,所谓的模态窗口可以根据HTML弹出窗口…

java调用接口实现的方法_java调用接口的实现方法

java调用接口的实现方法发布时间:2020-06-29 11:08:46来源:亿速云阅读:78作者:Leah本篇文章给大家分享的是有关java调用接口的实现方法,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇…

Java EE应用程序的单片到微服务重构

您是否曾经想过将现有的Java EE整体应用程序重构为基于微服务的应用程序需要做什么? 该博客解释了一个简单的购物车示例如何转换为基于微服务的应用程序,以及围绕它的一些担忧。 整体和基于微服务的应用程序的完整代码库位于: github.com/ar…