【6】进大厂必须掌握的面试题-Hibernate

点击上方“全栈程序员社区”,星标公众号

重磅干货,第一时间送达


1.什么是Hibernate Framework?

对象关系映射或对象关系管理(ORM)是将应用程序域模型对象映射到关系数据库表的编程技术。Hibernate是基于Java的ORM工具,它提供了一个框架,用于将应用程序域对象映射到关系数据库表,反之亦然。

Hibernate提供了Java Persistence API的参考实现,使其成为具有松散耦合优势的ORM工具的绝佳选择。我们可以使用Hibernate持久性API进行CRUD操作。Hibernate框架提供了使用JPA批注以及基于XML的配置将纯旧的Java对象映射到传统数据库表的选项。

同样,Hibernate配置也很灵活,可以从XML配置文件以及以编程方式完成。

2.使用Hibernate Framework有哪些重要好处?

使用Hibernate框架的一些重要好处是:

  1. Hibernate消除了JDBC附带的所有样板代码,并负责管理资源,因此我们可以专注于业务逻辑。

  2. Hibernate框架提供对XML和JPA注释的支持,这使我们的代码实现独立。

  3. Hibernate提供了一种与SQL类似的强大查询语言(HQL)。但是,HQL完全面向对象,并且了解诸如继承,多态性和关联之类的概念。

  4. Hibernate是Red Hat Community的一个开源项目,已在全球范围内使用。这使它成为比其他方法更好的选择,因为学习曲线很小,并且有大量的在线文档,并且可以在论坛中轻松获得帮助。

  5. Hibernate易于与其他Java EE框架集成,因此非常流行,Spring框架提供了将Hibernate与Spring应用程序集成的内置支持。

  6. Hibernate支持使用代理对象进行延迟初始化,并且仅在需要时才执行实际的数据库查询。

  7. Hibernate缓存有助于我们获得更好的性能。

  8. 对于数据库供应商特定的功能,Hibernate是合适的,因为我们还可以执行本机sql查询。

Hibernate在前几年是比较流行,现在感觉没落了,它包含您在ORM工具中将需要的所有功能。

3.解释Hibernate架构。

【6】进大厂必须掌握的面试题-Hibernate

4. get和load方法之间有什么区别?

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

序号 get() load()
1) 如果找不到对象,则 返回null 。 如果找不到对象,则引发ObjectNotFoundException 。
2) get()方法总是命中数据库。 load()方法不会访问数据库。
3) 它返回一个真实的对象,而不是proxy 。 它返回一个代理对象。
4) 如果您不确定实例是否存在,则应使用它。 如果您确定实例存在,则应使用它。

5. Hibernate与JDBC相比有什么优势?

Hibernate框架相对于JDBC的一些重要优点是:

  1. Hibernate删除了JDBC API附带的许多样板代码,这些代码看起来更清晰易读。

  2. Hibernate支持继承,关联和集合。JDBC API不提供这些功能。

  3. Hibernate隐式提供事务管理,实际上,大多数查询无法在事务外部执行。在JDBC API中,我们需要使用commit和rollback编写用于事务管理的代码。

  4. JDBC API抛出SQLException ,这是一个已检查的异常,因此我们需要编写许多try-catch块代码。在大多数情况下,它在每个JDBC调用中都是多余的,用于事务管理。Hibernate包装JDBC异常并抛出JDBCException或HibernateException未经检查的异常,因此我们不需要编写代码来处理它。Hibernate内置的事务管理功能消除了try-catch块的使用。

  5. Hibernate查询语言(HQL)更加面向对象,并且与Java编程语言非常接近。对于JDBC,我们需要编写本机SQL查询。

  6. Hibernate支持更好的性能缓存,不缓存JDBC查询,因此性能低下。

  7. Hibernate提供了一些选项,通过它们我们也可以创建数据库表,因为JDBC表必须存在于数据库中。

  8. Hibernate配置可帮助我们将JDBC之类的连接以及JNDI DataSource用于连接池。这是企业应用程序中非常重要的功能,而JDBC API完全没有。

  9. Hibernate支持JPA批注,因此代码独立于实现,可轻松地用其他ORM工具替换。JDBC代码与应用程序紧密结合。


往期推荐



【5】进大厂必须掌握的面试题-Java面试-spring

【4】进大厂必须掌握的面试题-Java面试-jdbc


【6】进大厂必须掌握的面试题-Hibernate

原文始发于微信公众号(全栈程序员社区):【6】进大厂必须掌握的面试题-Hibernate

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/104309.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号