在这篇文章中,我想向大家介绍Simon Martinelli,他除了其他事情外,还在伯尔尼应用科学大学教授Java EE和JPA。

Simon Martinelli, align=
  1. 嗨,Simon。你想自我介绍一下,并告诉我们一些你的开发经验吗?

    我是来自瑞士的软件架构师、开发者和培训师,在simas GmbH工作。除此之外,我还是伯尔尼应用科学大学Java EE、架构和设计以及持久化技术的讲师。在业余时间,我正在从事一些开源项目,并且作为JSR 352批处理和JSR 354货币和货币API的专家组成员。

    我在1995年开始我的IT生涯,作为IBM主机的Cobol开发者。自2000年以来,我作为开发人员、架构师和技术领导在许多企业项目中工作,使用J2EE/Java EE、Spring框架,偶尔使用.NET。我第一次接触OR-Mapping是在2000年,当时我们使用TopLink在瑞士铁路的项目中。

  2. 你在GitHub上有一个名为Query Language Result Mapper的开源项目。你能告诉我们这个框架的目标是什么吗?

    我喜欢JPA构造器表达式。在我看来,这是解决使用JPA时常见的性能问题的最佳方式。但构造器表达式仅适用于JPQL或Criteria API,有时你需要执行一个SQL查询,但又不想使用像jOOQ这样的功能齐全的SQL框架。

    当然,JPA自带了ConstructorResult,但我认为它太复杂了,并且它不在JPA 1.0中可用。Hibernate有ResultTransformer,但这只适用于Hibernate。因此,我决定开始创建Query Language Result Mapper (QLRM)。

    QLRM简单尝试根据JPA原生查询结果或使用纯JDBC时,基于JDBC ResultSet找到一个匹配的构造函数。它很简单、体积小,且与特定JPA实现无关。

  3. 您还在伯尔尼应用科学大学教授Java EE和Java持久化API。JPA容易学习吗?您的学生如何看待这个Java持久化标准?

    JPA是Java EE中最复杂的一部分,最难学习。因为它是泄漏的抽象,您必须对SQL数据库以及幕后发生的事情有深入了解。它也是性能问题的最常见来源。在授课时,我总是试图关注如何避免这些性能问题。

    我的学生通常喜欢JPA,因为它使数据访问变得容易得多。对于那些不了解对象关系映射(OR-Mapping)历史的人来说,很难理解JPA实现在某些情况下表现不同。他们不喜欢的是,(目前)JPA不支持Java 8日期时间API。

  4. 自从我开始写博客以来,我意识到解释一个主题有助于我更好地理解它。您认为所有开发者都应该参与教学或撰写关于他们想掌握的主题的文章或书籍吗?

    绝对!我自2007年起就开始教授JPA,这迫使我深入了解这个主题,因为学生的提问可能非常具有挑战性。有时我甚至不得不查看JPA实现的代码来了解幕后发生了什么。反过来,这种专业知识帮助我编写更好、更快的应用程序。

    正如阿尔伯特·爱因斯坦所说:“如果你不能简单解释,你就没有足够理解。”

  5. 我们始终重视用户的反馈,所以您能告诉我们您希望我们改进什么,或者有哪些功能我们应该添加支持吗?

    我认为Hibernate团队正在做一项了不起的工作!它已经功能齐全(尽管很难了解每个功能)。

    只有一点小问题:在阅读文档时,通常很难区分JPA标准内容和Hibernate特定内容。但我认为这并不重要,因为并不是很多开发者在项目中切换JPA实现。

感谢您抽出时间,西蒙,能够邀请您来这里是一种极大的荣幸。要联系西蒙,您可以在Twitter上关注他。


返回顶部