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