为什么hibernate将HibernateException更改为(未选中)RuntimeException

我知道在某些版本中,Hibernateexception被更改为未选中。 是什么原因? 这是一个哲学问题还是实际问题?

实际的。 因此,您不必在try catch块中包含有关Hibernate的每个操作。

摘自Java Persistence with Hibernate:

exception的历史 – 例外以及它们应该如何处理总是在Java开发人员之间激烈争论中结束。 Hibernate也有一些值得注意的历史也就不足为奇了。 在Hibernate 3.x之前,Hibernate抛出的所有exception都是经过检查的exception,因此每个Hibernate API都迫使开发人员捕获并处理exception。 此策略受JDBC的影响,JDBC也仅抛出已检查的exception。 然而,很快就发现这没有意义,因为Hibernate抛出的所有exception都是致命的。 在许多情况下,开发人员在这种情况下可以做的最好的事情是清理,显示错误消息并退出应用程序。 因此,从Hibernate 3.x开始,Hibernate抛出的所有exception都是未经检查的Runtime Exception的子类型,它通常在应用程序的单个位置处理。 这也使得任何Hibernate模板或包装器API都过时了。