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

Java 为什么hibernate将HibernateException更改为(未选中)RuntimeException,java,hibernate,exception,Java,Hibernate,Exception,我知道在某些版本中,Hibernate异常被更改为未选中。原因是什么?这是哲学问题还是实践问题?实践问题。因此,您不必将关于Hibernate的所有操作都包装在try-catch块中 取自带Hibernate的Java持久化: 例外的历史-例外 以及如何处理这些问题 在Java和Java之间的激烈辩论中结束 开发者。这并不奇怪 Hibernate有一些值得注意的历史 也在Hibernate 3.x之前,所有 Hibernate引发的异常是 检查异常,所以每个休眠 API迫使开发人员捕获并 处理异

我知道在某些版本中,Hibernate异常被更改为未选中。原因是什么?这是哲学问题还是实践问题?

实践问题。因此,您不必将关于Hibernate的所有操作都包装在try-catch块中

取自带Hibernate的Java持久化:

例外的历史-例外 以及如何处理这些问题 在Java和Java之间的激烈辩论中结束 开发者。这并不奇怪 Hibernate有一些值得注意的历史 也在Hibernate 3.x之前,所有 Hibernate引发的异常是 检查异常,所以每个休眠 API迫使开发人员捕获并 处理异常。这一战略非常成功 受JDBC的影响,JDBC也会抛出 仅检查异常。但是, 很快就明白了,这并不重要 有道理,因为所有的例外 由Hibernate抛出是致命的。在许多方面 在这种情况下,开发人员可以做到的最好 这种情况是要清理、展示的 显示错误消息,然后退出 应用因此,从 Hibernate 3.x,引发所有异常 由Hibernate定义的是 未选中的运行时异常,这是 通常在单个位置处理 在应用程序中。这也使得任何 Hibernate模板或包装器API 过时的


@T.J.是的,把它放在这儿就好了。我知道我在某个地方读过这篇文章,所以如果我找到了这篇文章的来源,我会把它贴在这里。这是Hibernate工作人员做出的许多愚蠢决定之一。如果在线程中抛出运行时异常,则运行时异常是不可见的:它只会杀死线程而没有任何跟踪。库中禁止运行时异常,这是非常糟糕的设计。同意。我现在必须更改DAO层中的所有经典try捕获,天知道在哪里可以运行时异常。白痴。