个性化阅读
专注于IT技术分析

推荐!Hibernate面试问题和答案集合

Hibernate面试问题是向学生询问的, 因为它是一种广泛使用的ORM工具。下面列出了针对初学者和专业人员的20个最冬眠面试问题和答案的重要列表。


1)什么是冬眠?

Hibernate是一个开源的轻量级ORM工具, 用于存储, 操作和检索数据库中的数据。

更多细节…


2)什么是ORM?

ORM是对象/关系映射的缩写。将对象与存储在数据库中的数据进行映射是一种编程策略。它简化了数据创建, 数据处理和数据访问。


3)解释Hibernate架构?

Hibernate体系结构包含许多接口, 例如Configuration, SessionFactory, Session, Transaction等。

更多细节…

Hibernate框架架构

4)Hibernate的核心接口是什么?

Hibernate框架的核心接口是:

  • 组态
  • 会话工厂
  • 会议
  • 询问
  • 标准
  • 交易

5)提到使用ORM优于JDBC的一些优点。

与JDBC相比, ORM具有以下优点:

  • 应用程序开发速度很快。
  • 交易管理。
  • 自动生成密钥。
  • SQL查询的详细信息被隐藏。

6)根据Hibernate定义标准。

条件的对象用于创建和执行面向对象的条件查询。


7)列出Hibernate支持的一些数据库。

Hibernate支持的一些数据库是:

  • DB2
  • MySQL
  • 甲骨文
  • Sybase SQL服务器
  • Informix动态服务器
  • HSQL
  • PostgreSQL的
  • FrontBase

8)列出Hibernate的关键组件。

Hibernate的关键组件是:

  • 组态
  • 会议
  • 会话工厂
  • 标准
  • 询问
  • 交易

9)提到Hibernate配置对象的两个组成部分。

数据库连接

类映射设置


10)如何在Hibernate中创建SQL查询?

SQL查询是通过以下语法创建的:

Session.createSQLQuery


11)HQL代表什么?

Hibernate查询语言


12)如何创建HQL查询?

使用以下语法创建HQL查询:

Session.createQuery


13)我们如何向SQL查询添加条件?

使用Session.createCriteria将条件添加到SQL查询。


14)定义持久类。

对象存储在数据库表中的类称为持久性类。



15)什么是SessionFactory?

SessionFactory提供Session的实例。这是Session的工厂。它保存默认情况下未启用的二级缓存的数据。

更多细节…


16)SessionFactory是线程安全的对象吗?

是的, SessionFactory是线程安全的对象, 许多线程无法同时访问它。


17)什么是会话?

它维护了Hibernate应用程序和数据库之间的连接。

它提供了从数据库存储, 更新, 删除或获取数据的方法, 例如persist(), update(), delete(), load(), get()等。

它是Query, Criteria和Transaction的工厂, 即它提供了返回这些实例的工厂方法。

更多细节…


18)会话是线程安全的对象吗?

不, Session不是线程安全的对象, 许多线程可以同时访问它。换句话说, 你可以在线程之间共享它。


19)session.save()和session.persist()方法有什么区别?

No. save() persist()
返回实例的标识符(可序列化)。 不返回任何内容, 因为其返回类型为void。
Syn:公共可序列化保存(对象o) Syn:public void持久(对象o)

20)get和load方法有什么区别?

下面给出了get()和load()方法之间的区别。

No. get() load()
如果找不到对象, 则返回null。 如果找不到对象, 则引发ObjectNotFoundException。
get()方法总是命中数据库。 load()方法不会访问数据库。
它返回真实对象, 而不是代理。 它返回代理对象。
如果你不确定实例是否存在, 则应使用它。 如果你确定实例存在, 则应使用它。

21)更新和合并方法有什么区别?

下面给出了update()和merge()方法之间的区别。

No. The update() method merge() method
更新意味着编辑内容。 合并意味着合并某些东西。
如果会话不包含具有相同ID的已持久状态, 则应使用update()。这意味着仅应在会话内使用更新。关闭会话后, 它将引发错误。 如果你不知道会话的状态, 则应使用merge(), 这意味着你想随时进行修改。

让我们尝试通过下面给出的示例了解差异:

...
SessionFactory factory = cfg.buildSessionFactory();
Session session1 = factory.openSession();
 
Employee e1 = (Employee) session1.get(Employee.class, Integer.valueOf(101));//passing id of employee
session1.close();
 
e1.setSalary(70000);
 
Session session2 = factory.openSession();
Employee e2 = (Employee) session1.get(Employee.class, Integer.valueOf(101));//passing same id

Transaction tx=session2.beginTransaction();
session2.merge(e1);

tx.commit();
session2.close();

关闭session1后, e1处于分离状态。它不会在session1缓存中。因此, 如果调用update()方法, 它将引发错误。

然后, 我们打开了另一个会话并加载了相同的Employee实例。如果我们在session2中调用merge, 则e1的更改将在e2中合并。


22)Hibernate中对象的状态是什么?

Hibernate中的对象(实例)有3种状态。

  1. 瞬态:如果对象刚刚创建但没有主键(标识符)并且与会话无关, 则处于瞬态状态。
  2. 持久性:如果打开了会话, 则对象处于持久性状态, 而你只是将实例保存在数据库中或从数据库中检索了实例。
  3. 已分离:如果关闭会话, 则对象处于分离状态。在分离状态之后, 如果你调用lock()或update()方法, 则对象将变为持久状态。

23)继承映射策略是什么?

Hibernate中有3种继承映射方式。

  1. 每个层次表
  2. 每个具体类别的表格
  3. 每个子类表

更多细节…


24)如何在Hibernate中创建一个不变的类?

如果将一个类标记为mutable =” false”, 则该类将被视为不可变类。默认情况下, 它是mutable =” true”。


25)什么是Hibernate中的自动脏检查?

Hibernate的自动脏检查功能会在事务中修改的对象上自动调用update语句。

让我们通过以下示例了解它:

...
SessionFactory factory = cfg.buildSessionFactory();
Session session1 = factory.openSession();
Transaction tx=session2.beginTransaction();
 
Employee e1 = (Employee) session1.get(Employee.class, Integer.valueOf(101));
 
e1.setSalary(70000);
 
tx.commit();
session1.close();

在这里, 获取雇员实例e1之后, 我们将更改e1的状态。

更改状态后, 我们将提交事务。在这种情况下, 状态将自动更新。这被称为Hibernate中的脏检查。


26)Hibernate中可以有几种类型的关联映射?

Hibernate中可以有4种类型的关联映射。

  1. 一对一
  2. 一对多
  3. 多对一
  4. 多对多

27)是否可以一对一和多对一执行集合映射?

不可以, 只能使用一对多和多对多执行映射。


28)什么是Hibernate中的延迟加载?

Hibernate中的延迟加载可提高性能。它按需加载子对象。

从Hibernate 3开始, 默认情况下启用了延迟加载, 因此你无需执行lazy =” true”。这意味着在加载父对象时不要加载子对象。


29)什么是HQL(Hibernate查询语言)?

Hibernate查询语言被称为面向对象的查询语言。它就像结构化查询语言(SQL)。

HQL相对于SQL的主要优点是:

  1. 你不需要学习SQL
  2. 与数据库无关
  3. 编写查询简单

30)一级缓存和二级缓存有什么区别?

No. 一级缓存 二级缓存
一级缓存与会话关联。 二级缓存与SessionFactory关联。
默认情况下启用。 默认情况下未启用。

Java OOP面试问题
Java字符串和异常问题
JDBC面试问题
JSP面试问题
Hibernate面试问题
SQL面试题
Android面试题
MySQL面试问题

1)

2)

1)

2)

3)

4)

1)

2)

1)

2)

Java基础面试问题

Java多线程问题

Java Collection面试题

Servlet面试问题

春季面试问题

PL / SQL面试问题

Oracle面试问题

SQL Server面试问题

赞(0) 打赏
未经允许不得转载:srcmini » 推荐!Hibernate面试问题和答案集合
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

微信扫一扫打赏