前 50 个 Hibernate 面试问题和答案 [对于初学者和有经验者]

已发表: 2020-12-15

目录

介绍

Hibernate 是 Java 中的一种轻量级、开源技术,在本篇博客中,我们将通过“50 个 Hibernate 面试问题”前五名的答案来了解 Hibernate 的过程和机制。

什么是休眠?

Hibernate 是一个开源的对象关系映射的轻量级工具。 它提供了一个框架来将面向对象的领域模型映射到基于 Web 的应用程序的关系数据库。

在我们调整 Hibernate 之前,我们应该问一些关于应用程序需求的问题:

  1. 我们可以将哪种数据模型用于新项目开发、应用程序设计或数据模型?
  2. 缓存性能水平如何?
  3. 我们如何定义简单或复杂的写作?
  4. 可扩展性有什么用,我们可以在什么场景下使用它?
  5. 在什么情况下自动数据库版本控制很重要?
  6. 我们需要 JAVA 的关系持久性吗?
  7. Support for Query Language有什么用,我们可以在什么场景下使用呢?
  8. 透明持久性流程及其对项目的影响是什么?

ORM 工具

它解释数据创建、数据操作和数据访问。 它是一种将对象映射到数据库中存储的数据的编程方法。

什么是休眠框架?

Hibernate 是一种基于 Java 的对象关系 ORM 工具映射解决方案。 它是一种对象-关系映射,是将应用程序域模型对象映射到关系数据库表的编程过程。 它实现了 Java Persistence API 的实现源,提供了作为具有松散耦合优势的 ORM 工具的绝佳选择。

Hibernate 框架的好处

  1. 轻量级和快速性能:Hibernate 框架的性能在缓存的帮助下是敏捷的,缓存在 Hibernate 框架内部工作。 Hibernate框架中的缓存分为一级缓存和二级缓存。
  2. 数据库自治查询:HQL(休眠查询语言)是 SQL 的面向对象的变体。 它创建独立的数据库查询,而无需编写特定于数据库的查询。
  3. 自动表创建:Hibernate 框架提供了自动生成数据库表的能力。 无需在数据库中手动创建表。
  4. 简化复杂连接:在 Hibernate 框架中,从聚合表中检索数据很容易。
  5. 容纳查询统计和数据库状态:Hibernate 维护查询缓存并提供统计快速结果。

休眠架构

Hibernate 架构整合了许多对象,例如持久对象、会话工厂、事务工厂、连接工厂、会话、事务。

Hibernate架构分为四层:

  • Java 应用层
  • Hibernate 框架层
  • 反手 API 层
  • 数据库层

为什么要选择Hibernate进程?

以下是我们在开始调整流程时可以使用的以下技术和流程:

  • Hibernate允许开发者确定应用程序中的版本类型字段,可以实时修改数据; 此功能为用户提供了他们可以保存数据并可以同时对其进行修改。
  • Hibernate 实现了对 JPA 注释的帮助,例如:@Entity、@Table、@Col 等。
  • 在 Hibernate 中,连接池是数据库连接中的一种技术,当我们通过外部工具创建并存储在缓存中时,这些连接我们可以在将来需要重用以连接到同一个数据库时从缓存本身中重用我们创建的应用程序
  • Hibernate 在任何环境中扩展了最佳程度的可扩展性。 它适用于各种规模的项目,从小型应用程序到数百万人使用的应用程序。
  • 在 Hibernate 中,数据库版本控制是一个重要的工具,它支持防止更改被其他用户无意回滚。 它允许在应用程序中记录版本类型。 当数据更新或存储时,一个版本类型和时间戳,我们也可以记录下来进行跟踪。
  • Hibernate 实现了透明的持久化,开发者在与 RDBMS 交互的过程中不需要显式地编写代码将数据库表元组映射到应用程序对象。
  • 在 Hibernate 中,事务管理是完成一组语句或命令的方法。 在 Hibernate 中,事务管理由事务接口完成。

考虑使用 Hibernate 而不是 JDBC 的五个理由

  1. 它解决了对象关系复杂的不匹配问题:

它以面向对象的编程语言和关系数据库提供了一个快速的解决方案。

示例:数据类型的差异、结构和完整性差异、操作性和事务性异常都可能导致对象关系复杂不匹配。

2.自动对象映射:

JDBC 和 Hibernate 在于它支持自动对象映射这一事实。” “Transparent Persistence”,此方法提供 Hibernate 通过交互将数据库表绘制到应用程序对象。

  1. 休眠查询语言 (HQL)

Hibernate 维护结构化查询语言 (SQL)。 JDBC 只支持 SQL,Hibernate Query Language (HQL) 与 SQL 有关,因为它是一种面向对象的查询语言。 为了连接方式,HQL 将查询解释为 SQL 查询,然后可以在数据库中启动操作。

  1. 数据库独立性

Hibernate 提供通过 XML 文件映射连接的数据表和应用程序; 如果需要,它提供了将数据传输到新数据库的更好方法。 虽然访问数据库的方式,信息是必需的,如果在它的可重用的情况下。 缓存是数据库性能的重要组成部分,它可以减少时间并实时支持应用程序。

  1. Hibernate 中的连接池:

Hibernate可以实现更可靠的性能; 它提供“连接池”; 这是一个收集缓存中的数据库连接的过程。 如果应用程序多次尝试连接到相同的数据库,这些连接可以从缓存本身中重用。

Hibernate面试问答

问题:1如何配置Hibernate 编写执行的SQL 语句并使用绑定参数到日志文件?

答:以下是以下步骤:

创建两个不同的日志部分和日志级别来记录执行的 SQL 语句和绑定参数:

  • 类别 org.hibernate.SQL
  • 具有日志级别 TRACE 的 org.hibernate.type.descriptor.sql 类别。

问题:2描述一下你最喜欢的 Hibernate 框架的特性。

答: ORM工具,Hibernate提供了强大的查询语言(HQL)

问题:3如何区分实体 Bean 和 Hibernate。

答:实体 bean是容器、类、描述符。 Hibernate是一个工具,可以立即将对象树持久化到一个类中。

问题:4解释一下Session对象的处理过程以及我们如何在一级缓存和二级缓存中使用它?

答:第一级缓存:它从每个会话开始,带有一个“会话对象

二级缓存:可以在多个会话之外共享

问题:5 Hibernate 中的继承是如何工作的? 实施它的各种策略是什么?

答:三种继承:

  1. 每个层次结构的表
  2. 每个混凝土类的表
  3. 每个子类的表

问题:6锁定在 Hibernate 中是如何工作的? 有哪些可用的锁定机制?

答:锁定机制是乐观和悲观问题:7 Hibernate 中的事务管理是如何工作的?

答:它在(JTA、JDBC)的帮助下工作。

问题:8 Hibernate 中的延迟加载是什么?

答:这种机制通过实现类的代理来实现实体及其关联。

问题:9 Hibernate 中可用的各种获取策略是什么?

答案: Join fetching 和 Select fetching

问题:10 Hibernate 中可用的各种获取策略有哪些?

答: Join-Fetching 和 Select Fetchings 是 Hibernate 中可用的提取。

问题:11 Hibernate中getting()和load()方法有什么区别?

答案:getting() 和 load() 用于获取指定标识符的数据。 Get() 方法返回 null,load() 方法抛出 object not found 异常类型的错误。

问题:12为什么不应该将实体类设为final?

答:用于实体绑定。

问题:13解释分离对象的优缺点。

答:它与过去的 Hibernate 会话有关; 它在数据库中有描述

问题:14什么是 Hibernate 查询语言(HQL)?

答:它基于 OOPS 概念。

问题:15说明SessionFactory接口在Hibernate中的作用。

答:是线程安全对象的进程,可以在应用线程进程中使用

问题:16 Hibernate 比 JDBC 有什么好处?

答:它提供了最快的性能和可扩展性。

问题:17描述一些由 Hibernate 维护的数据库。

答:使用JDBC的关系数据库。

问题:18如何区分 session.save() 和 session.persist() 方法?

答: Session.save() 用于将对象保存在数据库中,而 session.persist() 用于暂时的、持久的对象。

Question:19解释一下update和merge的方法?

答:可用于变换处于分离状态的对象。

问题:20是否可以进行一对一和多对一的集合映射?

答:它可以用于映射到另一个表中的许多行的表中。

问题:21如何在 Hibernate 中执行事务?

答:借助@transctional 类声明,我们可以执行事务。

问题:22 Hibernate 中的对象/关系映射在哪里表示?

答: Hibernate ORM 是一个对象/关系映射。

问题:23你对Light Object的看法是什么?

答: Session、Query、Criteria、Transaction是Light Object的概念。

问题:24 Hibernate 中的@Transient 是什么? 这样做有什么好处?

答: @Transient应用在javax中,它的持久化包。

问题:25如何结合Struts Spring Hibernate?

答:借助 ContextLoaderPlugIn,我们可以进行组合。

问题:26解释 Hibernate Log4j Logging。

答:由 log4j.xml 文件和 log4j.properties 文件组成。

问题:27 Hibernate中如何限制并发更新?

答:在悲观锁过程的帮助下,我们可以限制并发更新。

问题:28确定 Hibernate 持久类的最佳方法是什么?

答:有许多最佳方法和最佳实践可以用于映射持久类及其机制。

问题:29修改持久对象是什么概念?

回答: 持久对象通过休眠来追求,并在提交请求发生时存储到数据库中。

问题:30 Hibernate中的一对多双向关系是什么?

答:它是许多视图的关联属性的句柄的引用,作为mappedBy属性的好处,Hibernate拥有它需要的所有知识。 通过这些过程,我们需要定义一个双向的多对一关联。

阅读:成为全栈开发人员的技能

问题:31 Message Resource Bundle 工作中的值替换是什么?

答: Hibernate Validator 的 ResourceBundleMessageInterpolator 生成两个 ResourceBundleLocator 实例,一个用于 UserDefined 验证标准验证消息 - defaultResourceBundleLocator

问题:32解释SQL语​​句执行顺序的过程。

答:它是二级缓存,由于外键约束不能被破坏:插入,更新,删除数组元素,插入数组元素,删除,在它们出现的方向

问题:33如何使用EHCache在Hibernate中设置二级缓存?

答: Terracotta Ehcache是一种现代缓存,用作Hibernate 二级缓存 它可以作为一个独立的二级缓存来实践

问题:34 Entity Beans和Hibernate的主要区别是什么?

答:实体 bean继续由描述符、容器、类执行。 Hibernate只是一种立即将对象树保存到数据库中的类层次结构的机制。

问题:35解释一下使用Hibernate处理加入的步骤?

答:借助 SQL Join,我们可以处理它。

问题:36解释Hibernate代理的过程?

答: Hibernate 代理当我们调用 Session 时,这里指的是Hibernate 加载()。

问题:37使用Hibernate比使用SQL的主要优势是什么?

答:有了 ORM 的实践和Hibernate的使用,那么使用 SQL 就是 Hibernate 避免了编写大规模的查询。

问题:38解释一下我们可以在 Hibernate 中使用的设计模式?

:代理模式、域模型和对象模型是设计模式。

另请阅读:全栈开发职业生涯

问题:39解释 Hibernate 的体系结构。

答: Hibernate 有一个分层的架构,可以让用户在无需了解底层 API 的情况下进行管理

问:40列出Hibernate支持的数据类型?

答案: IntegerType、FloatType、DoubleType、CharacterType、ShortType。

问题:41什么是(JDO、CMP)?

答:它的Java 持久性技术。

问题:42 spring和Hibernate的主要区别是什么?

答: Spring 和 Hibernate 是两个独立的框架。 Spring与应用程序的放大流签约。 Hibernate是关于应用程序和数据库之间的交互的。

问题:43 Hibernate 什么时候可以找到 ORM 解决方案?

答: Hibernate 是 Java 的对象/关系映射 (ORM) 解决方案的概念; 术语对象/关系映射涉及将对象模型描述之间的数据映射到关系数据模型描述的过程。

问题:44提到在 Hibernate 中完成事务的分步过程。

答:借助 ACID-> 属性(原子性、一致性、隔离性和持久性)。

问题:45 Hibernate 中的映射在哪里?

答: Hibernate 映射是 Hibernate 的特性; 它们组织两个数据库表之间的连接,而模型中的属性。 这使您可以快速推动模型和标准查询中的关联。

问题:46你能谈谈 Hibernate 映射中可能存在的不同类型的关系吗?

答:一对一、多对一、一对多、多对多。

问题:47在 Hibernate 中我们可以在哪里定义对象映射?

答:Java对象转换为用于存储数据的 SQL 查询。

问题:48你能列出 Hibernate 中众多的集合类型吗?

答: HashMap、HashSet、TreeSet、Arraylist是Hibernate中的集合类型。

问题:49 Hibernate从数据库中取数据的过程是怎样的?

答:借助会话中使用 beginTransaction() API 函数的 Hibernate 标准,我们可以获取数据。

问题:50通过使用 JPA 注释 @NamedQuery 和 @NamedNativeQuery 来解释 Hibernate 映射文件。

答: @NamedQuery 和 @NamedNativeQuery 是 HQL 查询的类型,它们处理将 HQL 转换为众多 SQL 方言的复杂性。

报名参加世界顶尖大学的软件工程课程获得行政 PG 课程、高级证书课程或硕士课程,以加快您的职业生涯。

结论

我们希望这篇文章能帮助您了解面向初学者和专业人士的 50 大 Hibernate“面试”问题。

如果您有兴趣了解有关全栈软件开发的更多信息,请查看 upGrad 和 IIIT-B 的全栈软件开发执行 PG 计划,该计划专为在职专业人士设计,提供 500 多个小时的严格培训、9 个以上的项目,和任务、IIIT-B 校友身份、实用的实践顶点项目和顶级公司的工作协助。

踏上梦想的工作

立即申请软件工程硕士