当前位置: 首页 > 面试题库 >

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

田意致
2023-03-14
问题内容

我知道在某些版本中,Hibernate异常已更改为未经检查。是什么原因?这是哲学问题还是实际问题?


问题答案:

实际的。因此,您不必将所有与Hibernate有关的操作都包装在try catch块中。

摘自Hibernate的Java Persistence:

异常的历史-异常及其处理方式总是以Java开发人员之间的激烈辩论而告终。休眠也具有一些值得注意的历史也就不足为奇了。在Hibernate
3.x之前,Hibernate抛出的所有异常都是经过检查的异常,因此每个Hibernate
API都强制开发人员捕获并处理异常。该策略受JDBC的影响,JDBC也仅引发检查的异常。但是,很快就知道这是没有意义的,因为Hibernate抛出的所有异常都是致命的。在许多情况下,开发人员在这种情况下最好的选择是清理,显示错误消息并退出应用程序。因此,从Hibernate
3.x开始,Hibernate抛出的所有异常都是未经检查的Runtime
Exception的子类型,通常在应用程序中的单个位置处理。这也会使任何Hibernate模板或包装器API过时。




 类似资料:
  • 问题内容: 我知道在某些版本中,Hibernate异常已更改为未经检查。是什么原因?这是哲学问题还是实际问题? 问题答案: 实际的。因此,您不必将有关Hibernate的每一项操作都包装在try catch块中。 摘自Hibernate的Java Persistence: 异常的历史-异常及其应如何处理始终以Java开发人员之间的激烈辩论而告终。hibernate也具有一些值得注意的历史也就不足为

  • 问题内容: 有什么用的,并在Hibernate?因为我在互联网上发现的每个示例都是在单个表中插入数据,并使用两个不同的类来完成此操作。我的观点是,如果我使用单个表,那么我可以在单个类中映射所有列,那么为什么要使用不同的类。如果我们使用两个不同的表,则存在和休眠关系。 问题答案: Hibernate 1中有两种类型的对象。Value Object2 。实体 价值对象 是不能独立存在的对象。以为例。如

  • 问题内容: 为什么Java中的两种异常类型分别称为“已检查”和“未检查”?这些名字背后的原因是什么? 问题答案: 如果您调用一个声明为抛出 检查 异常的方法(例如),则编译器将 检查 您是否正在捕获该异常或声明您将其重新抛出。同样,为了首先抛出这种检查过的异常,编译器会 检查 您是否已将其声明为方法签名的一部分。 基本上,它与类型检查有点像,只是在方法可以引发异常方面。 编译器不会对未检查的异常执

  • 问题内容: 它为什么如此重要?根据XML映射的优势是什么?你能解释这些吗?谢谢。 问题答案: 它不是“强制性”中的重要内容。有优势和劣势的可能性是不同的。 优点: 编译时检查:如今在IDE中,用Java(而不是Xml)编写非常易于使用。启动应用程序(渐进式编译)时,没有发现 更多错别字 ,也没有什么值得记住的( 完成 )… 使用代码进行本地化(类级别):不必打开两个文件(java和xml)以获取完

  • 问题内容: 我正在尝试使我的@OneToMany和@ManyToOne关系正确。 第1类: 第2类: 当我加载或保存新记录时,这种关系似乎运行良好: 但是,当我尝试更新该记录时,它将尝试将IdeaProfileId设置为null: 当我调试时,我可以看到IdeaProfileId确实在音高对象上设置了… 仅供参考,我不是直接更新从数据库加载的原始对象。这些域映射到UI更新的Model类。因此,在保

  • 问题内容: 有谁知道Hibernate如何知道在调用时是要插入还是要更新数据库中的值? 到目前为止,我仅确定它不依赖于高速缓存中的信息,并且数据库中实体的存在由主键确定。 问题答案: 当您使用Hibernate时,将检查对象是否为瞬态对象(它没有标识符属性),如果是这样,它将通过生成标识符并将其分配给会话来使其持久化。如果对象已经具有标识符,它将执行。 从文档中: saveOrUpdate()执行