zoukankan      html  css  js  c++  java
  • 【6】进大厂必须掌握的面试题-Java面试-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架构。

    HibernateArchitecture-Java面试问题-Edureka

    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代码与应用程序紧密结合。

    欢迎关注 Java架构师社区公众号.
    本文转载自Java架构师必看 ,更多内容点击查看!

  • 相关阅读:
    XML错误信息Referenced file contains errors (http://www.springframework.org/schema/beans/spring-beans-4.0.xsd). For more information, right click on the message in the Problems View ...
    Description Resource Path Location Type Cannot change version of project facet Dynamic Web Module to 2.3.
    maven创建web报错Cannot read lifecycle mapping metadata for artifact org.apache.maven.plugins:maven-compiler-plugin:maven-compiler-plugin:3.5.1:runtime Cause: error in opening zip file
    AJAX跨域
    JavaWeb学习总结(转载)
    JDBC学习笔记
    Java动态代理之JDK实现和CGlib实现
    (转)看懂UML类图
    spring boot配置使用fastjson
    python3下django连接mysql数据库
  • 原文地址:https://www.cnblogs.com/mush/p/13817404.html
Copyright © 2011-2022 走看看