Hibernate 20周年纪念 - Vlad Mihalcea


这是著名Hibernate推广者Vlad Mihalcea文章,他一直致力于编写大量ORM教程,帮助人们协调处理关系数据库与面向对象两种范式之间的矛盾,试图在简易性和灵活性方面取得平衡:

2001年5月23日,加文·金(Gavin King)发布了第一个Hibernate版本。二十年后,Hibernate是最成功的Java数据访问框架之一,每天都有成千上万的开发人员使用它。
参与Hibernate项目一直是我做过的最好的投资之一。接下来,我将分享我的旅程来庆祝这个伟大的周年纪念。
2004年,当我开始研究研究生论文时,由于它是一个.NET项目,所以我开始阅读NHibernate,NHibernate是一个全新的开源项目,它当时反映了一个非常著名的Java项目Hibernate。
在阅读了NHibernate和Hibernate文档之后,我被吸引了,文档写得很好,并且数据访问API既简单又强大。因此,即使可用版本只是Beta版本0.8.4,我也选择了NHibernate。
 
J2EE和JDBC
采用NHibernate非常简单,并且数据访问逻辑看上去比ADO.NET更好。
毕业之前,我被聘为使用J2EE的基于Java的项目的软件开发人员。由于臭名昭著的性能问题,数据访问层未使用实体Bean,因此它使用的是JDBC。
我必须实现事务处理机制,以确保在同一数据库事务中征用了多种DAO方法。如今,这仅是添加@Transactional注释的问题,但是20年前,要实现此目标需要进行大量的工作。
在项目中期,项目经理说我们也必须增加对Oracle的支持。数据访问层由数千个SQL Server特定的语句组成,因此增加对Oracle的支持需要花费数周的时间。以前使用过NHibernate,我开始错过它的便利性和内置的数据库可移植性。
 
Spring和Hibernate
在2008年,我加入了一个使用Spring和Hibernate的新团队,该项目模板是使用Matt Raible的AppFuse生成的。如此简单J2EE抛在脑后!Spring和Hibernate的合作非常顺利,该项目取得了圆满成功。
每天都必须使用Hibernate,这使我可以了解更多有关它的信息。因此,我开始阅读由Hibernate的长期撰稿人Christian Bauer和Hibernate的父亲Gavin King撰写的《Java Persistence with Hibernate》一书。这本书有880页,是我以前阅读过的最大的技术书籍之一。但这一切都是值得的。
通过阅读文档和《 Java Persistence with Hibernate》这本书,我了解了如何正确使用Hibernate。
直到2015年,当我辞掉软件架构师的工作时,我们开发的每个Java项目都使用Spring和Hibernate。从小型项目到芬兰最大的房地产平台之一,Spring和Hibernate一直是我们成功的故事。
  
博客和问题问答
2013年,我开始撰写此博客,并且一直以来,我设法撰写了400多篇有关Hibernate,JPA和数据库系统的文章
博客可以双向工作。不仅可以与他人分享您的知识,而且写下您的想法是加深您对给定主题的理解的一种好方法。
以前,我只阅读StackOverflow的答案,但2014年5月,我开始回答Hibernate问题,令我惊讶的是,我开始喜欢这样做。如今,我的StackOverflow帐户向我显示我回答了1600多个问题。
一段时间后,Hibernate团队注意到我参与了该项目,并向我提供了一个工作机会,以担任Hibernate项目开发倡导者
 
在Hibernate项目中工作

在从事Hibernate项目的三年中,我设法重写了《用户指南》,添加了一些性能调整选项,集成了无数的Pull Request,使Hibernate论坛复活,并在各种软件会议上进行了讨论。这是我为庆祝我的Hibernate 3周年纪念日写的一篇文章
  
高性能Java持久性
在作为软件开发人员工作时,我注意到,在我从事的每个项目中,无论使用什么框架,我的一些同事都在为数据库性能问题而苦苦挣扎。
而且,由于我的文章和StackOverflow的答案都受到好评,所以我开始考虑写一本有关Java数据访问性能调整的书。这就是我的《高性能Java持久性》一书的诞生方式。
五年后,High-Performance Java Persistence成为亚马逊畅销书,获得了63条以上的评论
 
Hibernate Types
在2018年秋天,我启动了Hibernate Types开源项目,该项目为各种特定于数据库的列类型提供支持,例如JSON,ARRAY,Range,HStore,Inet。如今,Hibernate Types项目每月获得超过850k的下载量
 
Hypersistence优化器
退出Red Hat后,我开始使用Hypersistence Optimizer,该工具可帮助您分析Hibernate映射,配置以及查询和EntityManager用法,并告诉您需要进行哪些更改以加快数据访问层的速度。
两年后,Hypersistence Optimizer成为了数百家每天使用它的公司的救命稻草。
 
Hibernate的前景非常光明。作为任何Spring Boot或Quarkus项目的默认数据访问层选项,Hibernate的采用随着每个新项目的开始而越来越大。
5.5分支旨在增加对Jakarta EE的支持,而6.0版本将提供新的查询解析器和许多性能优化。因此,我期待着Hibernate的未来20年。