在这篇文章中,我想向大家介绍 Thorben Janssen,一位资深的 Hibernate 用户和博主。

-
嗨,Thorben。你想介绍一下你自己,并告诉我们一些你的开发经验吗?
嗨,感谢你的邀请。
我叫 Thorben Janssen。我36岁,已婚,有一个小儿子。我还是一名培训师、博主和开发者,专注于 JPA 和 Hibernate,并且是 CDI 2.0 专家组成员。
我的职业生涯始于15年前的一个实习,为手机运营商开发各种小型 PHP 应用程序。不久后,我就加入了开发团队的其他成员,并开始使用 EJB 2 和 JBoss 应用服务器。一开始,那是一个痛苦的经历。EJB 2 难以学习,并产生了对 XML 文件的厌恶,这种感觉一直持续到现在。
但它也让我进入了 Java EE 和大型系统的实现和设计。这就是我一直在做的事情。在这段时间里,我也管理过小型到中型开发团队,并担任过架构师。但我始终是,并且仍然是内心深处的一名 Java EE 开发者,尽可能多的时间都在 IDE 中。我认为,对新事物的兴趣以及他/她使用的工具是一个优秀开发者的关键特征之一。我总是阅读即将到来的规范变化或他们实现中的新、专有功能,并在小型项目中尝试它们。在某个时刻,我开始与我的同事分享我的知识,这让我对通过撰写和讲述 JPA 和 Hibernate 来教授他人产生了新的热情。
-
你的网站 Thoughts on Java 拥有大量的 JPA 和 Hibernate 教程。你为什么决定写这个主题?
这基本上是偶然发生的。正如我之前所说,我一直在从事后端应用程序的工作,持久层是这些应用程序的一个重要部分。
我一直对使数据库访问更简单、更高效的方法感兴趣。简单的读写操作应该容易实现。我们的客户不是付钱给我们从数据库中读取一些记录。他们期望我们解决复杂的企业需求。
我在职业生涯中投入了大量的时间和精力去学习和实施高效的数据库访问,尤其是在Hibernate方面。当我开始写博客时,我在研究JPA 2.1中引入的更改。[关于JPA 2.1的概述](http://www.thoughts-on-java.org/jpa-21-overview/?utm_source=hibernateblog&utm_medium=interview)。我发现了一些很有用的新特性,比如[命名实体图](http://www.thoughts-on-java.org/jpa-21-entity-graph-part-1-named-entity/?utm_source=hibernateblog&utm_medium=interview)的
@NamedEntityGraph
,存储过程调用[存储过程调用](http://www.thoughts-on-java.org/call-stored-procedures-jpa/?utm_source=hibernateblog&utm_medium=interview),以及AttributeConverter
。我想记录它们,以便将来在项目中轻松使用。当我将我的文章链接分享到社交媒体上时,我惊讶地发现这么多开发者对这些事物感兴趣。Hibernate和JPA是我主要感兴趣的内容,并成为我博客的主要主题。那是3年前的事情了,现在这个博客每月的访问量已经超过[10万次](http://www.thoughts-on-java.org/thoughts-java-report-october-2016/?utm_source=hibernateblog&utm_medium=interview),有一个[免费的会员图书馆](http://www.thoughts-on-java.org/free-member-library/?utm_source=hibernateblog&utm_medium=interview),包括电子书和速查表,还有一个小的[YouTube频道](http://www.thoughts-on-java.org/YouTube-channel/UCYeDPubBiFCZXIOgGYoyADw)。
这也为我提供了在会议上发言和提供课堂和[在线培训](http://www.thoughts-on-java.org/academy?utm_source=hibernateblog&utm_medium=interview)的机会。
-
目前,你决定自己经营培训业务。你能告诉我们更多关于它以及到目前为止的情况吗?
在某个时刻,这是合乎逻辑的下一步。我从一个小型的副业开始,提供了一些课堂研讨会。今年年初,我进行了第一次[Hibernate性能调优在线培训](http://www.thoughts-on-java.org/course-hibernate-performance-tuning/?utm_source=hibernateblog&utm_medium=interview)。有很多兴趣,它很快就增长到了一个点,我无法同时处理日常工作、写博客和提供培训。我和妻子决定我应该辞去日常工作,专注于自己的业务。
到目前为止,这是一个很好的决定。过去的两个月很艰难,但我也有很多乐趣。额外的时间让我终于可以启动免费会员图书馆(我自从2015年底就想着手的项目)和一个新的Hibernate培训。
在我的新[高级Hibernate在线培训](http://www.thoughts-on-java.org/advanced-hibernate-online-training/?utm_source=hibernateblog&utm_medium=interview)中,我解释了很多高级JPA和Hibernate特性,您可以使用它们创建动态、类型安全的查询,支持自定义数据类型,实现多租户应用和管理并发性。我还提供[Hibernate性能调优在线培训](http://www.thoughts-on-java.org/course-hibernate-performance-tuning/?utm_source=hibernateblog&utm_medium=interview),其中我向您展示如何查找和修复性能问题。这是我的两天课堂培训的在线版本,我们深入探讨了各种JPA和Hibernate特性,这些特性使您能够轻松满足高性能要求。您可以查看这个[免费视频系列](http://www.thoughts-on-java.org/free-video-series-hibernate-performance-tuning/?utm_source=hibernateblog&utm_medium=interview)中的部分课程。
我每年提供2-3次这两项培训,包括自学和团队辅导选项。自学选项为您提供了终身访问培训视频的权利,这样您可以在空闲时间学习。团队辅导在此基础上还提供了许多好处,如访问社区论坛讨论您的问题和额外的练习。这使得它类似于课堂培训,比典型的在线课程更有效。
这两项培训的报名目前正在进行中,您可以[加入直到11月11日](http://www.thoughts-on-java.org/academy?utm_source=hibernateblog&utm_medium=interview)。
-
您对未来的计划是什么?您将继续撰写有关Hibernate的文章,还是也希望撰写其他主题的内容?
有很多其他有趣的Java EE相关主题。但就目前而言,我将专注于JPA和Hibernate。我还有一大堆想要撰写的有趣功能,我刚刚开始在YouTube频道上发布Hibernate相关视频。
接下来的大型项目将是第三个Hibernate培训和一本书。现有的两个培训是为有经验的Hibernate用户准备的,他们想要深化自己的知识并学会更有效地使用Hibernate。第三个培训将面向Hibernate初学者,他们想学习如何将数据库表映射到实体以及如何执行简单的查询。我希望在2017年的上半年完成这项工作。
而这本书将汇集现有的和新的一些Hibernate小贴士。这是一篇在我博客上很受欢迎的文章系列,我每周都会发布一条简短的小贴士,比如如何定义查询超时或使用Criteria API选择标量值。我可能将在2017年初发布它。
-
我们一直重视用户的反馈,所以您可以告诉我们您希望我们改进Hibernate项目(ORM、搜索、验证器、OGM)吗?或者有哪些功能我们应添加支持?
我喜欢您在Hibernate 5中引入的新的Java 8支持。在我看来,日期和时间API的支持是现代持久化框架的必需品,而诸如可重复注解以及对于Streams和Optional的支持使得Hibernate的使用更加方便。
目前我缺少的两个功能是子查询的更好支持和基于鉴别器的多租户支持。JPA和Hibernate只为子查询提供基本支持。如果能将它们用于SELECT和FROM子句,而不仅仅是WHERE子句,那将非常棒。基于鉴别器的多租户支持似乎已经列入了您的清单,我期待着它。
感谢您抽出时间,Thorben。有您在这里非常荣幸。要联系Thorben,您可以关注他在Twitter上的账号。