当前位置: 首页 > news >正文

做网站之前的前期中国建设银行幼儿缴费官网站

做网站之前的前期,中国建设银行幼儿缴费官网站,上海企业网站设计制作,佛山新网站建设平台这是有关Hibernate Framework的一些最重要问题的摘要#xff0c;可能会要求您在访谈中回答#xff01; 您无需担心下一次面试的机会#xff0c;因为Java Code Geeks在这里为您服务#xff01; 您可能会被问到的大多数事情都收集在下面的列表中。 我们的Hibernate面试问题将… 这是有关Hibernate Framework的一些最重要问题的摘要可能会要求您在访谈中回答 您无需担心下一次面试的机会因为Java Code Geeks在这里为您服务 您可能会被问到的大多数事情都收集在下面的列表中。 我们的Hibernate面试问题将带您了解完整的Hibernate框架并使用问题和答案提供对该框架的透彻了解。 对问题进行了分类以根据需要提供特定于每个模块的信息。 有了这些Hibernate面试问题我们确保您不再需要担心与Hibernate框架相关的面试。 问题与解答始于框架及其概念的介绍。 它们扩展到配置用法和概念。 为了更深入我们涵盖了有关缓存级别和与缓存有关的配置的问题。 这些问题以对各种休眠特定功能的解释作为结束这些功能使您的编程更加容易。 让我们开始介绍部分。 目录 休眠基础 配置Hibernate框架 休眠缓存和实现 休眠基础 1.什么是ORM Java是一种面向对象的编程语言。 在Java中我们几乎将每个现实世界的实体映射到一个对象中。 ORM是对象关系模型的缩写。 ORM是Hibernate框架背后的基本概念。 ORM是将数据库表映射到Java类或Java对象的过程。 数据库中的每一列都映射到Java中的不同变量。 因此ORM帮助我们简化了与Java中的数据库交互的过程。 2.什么是Hibernate框架 Hibernate框架是一组Java类旨在简化数据库连接和交互过程。 Hibernate框架提供了数据库和Java代码之间的中间代码层。 该层简化了数据库连接池查询执行以及缓存的配置。 Hibernate使开发人员可以在很大程度上不受数据库更改的影响。 3.什么是方言 方言是一组代码文件或一个文件有时会定义将数据库连接到Java类的过程。 Hibernate中的一种方言起着理解与基础数据库之间发生的通信的作用。 每当基础数据库更改时在Hibernate配置中只需更改方言和数据库凭据即可。 只要代码使用HQL查询便是如此。 4.什么是HQL查询 HQL是Hibernate查询语言的缩写。 HQL是一种独立于数据库编写查询的简单方法。 Hibernate框架可以理解HQL查询。 根据所使用的数据库方言它们会转换为普通的SQL查询。 通常在没有休眠框架的情况下更改基础数据库的过程涉及所有查询的更改。 使用Hibernate框架如果代码使用HQL查询则更改基础数据库的过程非常简单。 所需要做的就是更改方言和数据库凭据其余部分由框架负责。 5.配置Hibernate框架的可能方法是什么 可以使用XML以及Java类注释来配置休眠框架。 但是仅从Hibernate 4.0中引入了基于Java类的注释功能。 因此任何较低的版本仅支持基于XML的配置。 6.什么是连接池 在企业应用程序中该应用程序将受到众多用户的攻击。 如果应用程序服务器为每个请求建立一个新的连接则将对数据库服务器造成负担。 另一方面如果仅存在一个数据库连接则查询请求的开销将很大。 因此最好在Hibernate中预先配置数量有限的数据库连接。 Hibernate框架可确保建立新的连接直到达到定义的最大限制。 发布限制后Hibernate重用数据库连接对象。 因此Hibernate连接池是为管理与数据库的并行通信而创建的一堆数据库连接对象。 7.什么是JPA JPA是Java持久性API的首字母缩写。 Java的该API在Java中提供了某些预定义的注释这使数据库ORM更加简单。 您需要做的就是将这些注释放在类名和变量上方以将它们映射到数据库表。 8. JPA如何在Hibernate框架中提供帮助 在JPA作为ORM标准发布并接受之前Hibernate使用XML映射将休眠的Value对象严格绑定到Database对象。 该映射基于XML因此容易出现高错误并且在配置映射时需要付出更多的努力。 使用JPAHibernate通过启用对JPA批注的扫描来简化映射过程。 这些注释消除了将XML用于映射的需要。 9.与JDBC相比使用Hibernate有什么优势 JDBC – Java数据库连接是标准的数据库连接API它需要数据库驱动程序代码和每个数据库的单独数据库连接代码。 JDBC仅理解标准SQL查询。 借助Hibernate框架数据库驱动程序已预先加载。 每次更改数据库时无需下载其他驱动程序。 此外Hibernate支持SQL以及HQL。 如果开发人员使用HQL则Hibernate会使用已配置的方言来为基础数据库准备SQL查询。 此外Hibernate还提供具有多种配置的托管缓存。 10. Hibernate提供哪些重要接口 使用以下重要接口进行休眠。 会话org.hibernate.Session Session是为Java应用程序与数据库持久性存储之间的通信周期而创建的单线程且短暂的对象。 它是JDBC java.sql.Connection类的包装并且用作org.hibernate.Transaction的工厂。 仅在必要时才创建实现此接口的类的实例并在我们使用完该接口后立即销毁它。 该对象提供Java核心和CRUD操作的休眠框架之间的接口。 SessionFactoryorg.hibernate.SessionFactory 顾名思义此接口管理提供用于创建和销毁Session对象的功能签名。 实现SessionFactory的类具有不变的线程安全缓存该缓存被维护以管理会话。 此外它还维护了预编译数据库映射的缓存以确保更快的数据库操作。 交易org.hibernate.Transaction 顾名思义事务是一个接口其中包含用于管理数据库交互的功能定义。 事务是一个短暂的线程负责从Java应用程序中获取数据并以查询的形式将其传递到数据库。 事务类似于在每个数据库事务之后都会销毁的会话。 配置Hibernate框架 11. Hibernate框架涉及哪些配置 Hibernate框架是一个庞大的框架旨在为您处理几乎所有数据库操作。 配置这样的框架涉及要配置的多个实体。 这些包括 数据库凭证 数据库方言 数据库URL 缓存级别 ORM映射 连接池配置 表创建模式–创建/更新 Hibernate几乎为每个非数据库配置都提供了默认值例如连接池大小缓存级别表创建模式等。 因此尽管具有许多可配置的方面但它允许以最少的配置开始。 12.什么是Hibernate配置文件 Hibernate配置文件包括使用Hibernate框架开始数据库连接所需的特定于数据库的配置。 该配置文件通常是一个名为hibernate.cfg.xml的XML文档。 如果您希望使用基于Java的配置则需要创建一个类似于以下所示的属性文件。 ################### JDBC Configuration ########################## jdbc.driverClassNameorg.mysql.jdbcDriver jdbc.urljdbc:mysql://localhost:3306/mydb;shutdowntrue jdbc.usernameroot jdbc.passwordxxxxxx################### Hibernate Configuration ########################## hibernate.dialectorg.hibernate.dialect.MySQLDialect hibernate.show_sqltrue hibernate.hbm2ddl.autoupdate hibernate.generate_statisticstrue 该文件可以使用任何名称。 但是有必要使用此文件名在Java文件中加载此配置。 下面显示了在Java配置中加载属性文件的示例代码。 import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; import org.springframework.core.io.ClassPathResource;Import({RepositoryConfig.class}) Configuration public class AppConfig {//Beanpublic PropertyPlaceholderConfigurer getPropertyPlaceholderConfigurer(){PropertyPlaceholderConfigurer ppc new PropertyPlaceholderConfigurer();ppc.setLocation(new ClassPathResource(hibernate.properties));ppc.setIgnoreUnresolvablePlaceholders(true);return ppc;} } 可以注意到在基于Java的配置中类代码也包含一些Spring框架类。 因此该示例属于Hibernate与Spring的集成。 请仔细注意此处的注释。 这些注释定义该类带有休眠配置。 13. Hibernate如何创建数据库连接 Hibernate读取配置的方言来确定要使用的驱动程序jar。 Hibernate预先打包了数据库驱动程序jar。 这些jar与用于使用JDBC连接到数据库的jar相同。 基于方言Hibernate动态注册各自的驱动程序类并使用URL和凭据在后端使用JDBC通过数据库连接到数据库。 14.配置对象表映射的可能方法是什么 在Hibernate中有两种可能的方法来配置映射。 两种方法之一是创建一个XML文件该文件定义了数据库列和类变量之间的映射。 该XML被称为映射XML。 每个这样的XML的条目都需要在hibernate.cfg.xml中完成以确保Hibernate识别并预编译这些绑定。 配置bean的另一种方法是使用带注释的Java类进行映射。 只要在hibernate.cfg.xml中指定了文件夹的路径就会自动扫描带注释的Java类。 15.使用哪个注释将一个类声明为休眠bean 注释Entity用于将类声明为实体。 一个简单的例子如下所示。 Entity Table(nameusers) public class User{ String username; String password; }16.如何指定使用注释链接到实体的表名 从上面的代码可以看出注解Table用于指定链接到该实体的数据库表名称。该实体需要一个强制属性name 该属性name指定数据库中的表名称。 17.实体中的变量如何连接到数据库列 默认情况下Hibernate在类中查找与变量名匹配的列名。 但是也可以指定不同的变量名并将它们绑定到数据库中的相应列。 18.我们如何为变量映射指定其他列名 注释Column用于定义与变量关联的列名。 在没有此注释的情况下Hibernate会预先编译映射到具有相同名称的列的变量的映射。 下面显示了使用此注释的示例 Entity Table(nameusers) public class User{ Column(nameuser_name) String username; String password; } name属性是必填属性用于指定与变量名称不同的列名称。 从上面的代码可以理解列user_name绑定到变量username 19.我们如何指定一个变量作为表的主键 Hibernate能够直接基于Java代码中提供的映射为应用程序创建数据库表。 在这种情况下Hibernate需要知道哪些列应该是主键。 可以使用Id注释进行配置。 Hibernate不仅负责将此列创建为主键列而且还在每次数据库插入和更新期间验证其唯一约束。 20.我们如何定义主键值生成逻辑 可以根据数据库使用各种方法来生成主键值。 例如在MySQL数据库中可以使用自动递增算法生成主键而在Oracle数据库中您需要创建一个序列并将其用于自动递增主键的值。 可以使用下面的注释代码指定这些生成方法。 Entity Table(nameusers) public class User{Id GeneratedValue(strategyGenerationType.IDENTITY) int userid;Column(nameuser_name) String username;String password; } 这里的userid列已定义为使用身份策略自动生成的主键。 strategy的可能值包括 GenerationType.AUTO GenerationType.IDENTITY GenerationType.SEQUENCE GenerationType.TABLE 21.如何在hibernate.cfg.xml中配置方言 在xml中配置方言涉及定义名称为hibernate.dialect的属性。 下面显示了用于定义方言的样本XML标签 property nameorg.hibernate.dialect.MySQLDialect org.hibernate.dialect.MySQLDialect /property22.如何在hibernate.cfg.xml中配置数据库URL和凭证 可以使用各种属性值来配置Hibernate框架。 在上述问题中我们讨论了如何使用属性文件配置框架。 XML中的配置非常相似。 我们只需要使用与上面的属性文件中指定的名称相似的名称来创建相应的属性标签。 下面提供了配置数据库URL和凭据的示例。 property name hibernate.connection.urljdbc:mysql://localhost/mydb/propertyproperty name hibernate.connection.usernameroot/propertyproperty name hibernate.connection.passwordpassword/property 在执行Java应用程序时Hibernate框架会预编译代码以连接到数据库并创建一个连接池以减少查询执行期间数据库连接的开销。 23.如何配置连接池大小 Hibernate中的连接池大小有两个值-最小池大小和最大池大小。 可以使用属性hibernate.c3p0.min_size和hibernate.c3p0.max_size来配置这些大小。 可以按照与上述数据库凭据所示相同的方式配置这些属性。 24.如何为Hibernate bean配置文件夹扫描 Hibernate文件夹扫描是Spring支持的功能。 Spring框架提供了扫描文件夹并以休眠Bean形式准备映射的支持而无需创建休眠映射xml。 要使用Spring框架和Hibernate配置要扫描的文件夹请使用以下代码 bean idsessionFactoryclassorg.springframework.orm.hibernate4.LocalSessionFactoryBeanp:dataSource-refdataSourcep:configLocationWEB-INF/classes/hibernate.cfg.xmlp:packagesToScancom.example.model /24.如何在没有Spring框架的情况下配置休眠bean 在没有Spring框架的情况下bean的配置使用相应的映射xml文件完成。 这些XML文件需要添加到hibernate配置xml中以便hibernate能够检测到它们。 还可以配置框架使其扫描XML条目。 下面的代码演示了如何配置休眠模式以扫描bean配置文件。 ?xml version 1.0 encoding utf-8? !DOCTYPE hibernate-configuration SYSTEM http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd hibernate-configurationsession-factoryproperty name hibernate.dialectorg.hibernate.dialect.MySQLDialect/propertyproperty name hibernate.connection.driver_classcom.mysql.jdbc.Driver/property!-- Assume test is the database name --property name hibernate.connection.urljdbc:mysql://localhost/test/propertyproperty name hibernate.connection.usernameroot/propertyproperty name hibernate.connection.passwordroot123/property!-- List of XML mapping files --mapping resource User.hbm.xml//session-factory /hibernate-configuration 在上面的代码中映射部分指示User类的bean的休眠映射文件路径。 休眠缓存和实现 缓存是企业级应用程序每天处理数千个请求所必需的一项重要功能。 Hibernate框架固有地认为在各个级别缓存查询输出。 这些缓存级别可配置为最适合您的需求。 缓存级别分为三种 会话级别缓存会话级别缓存由Hibernate作为默认缓存级别实现。 此缓存的功能是缓存会话中的对象。 这些缓存的对象驻留在会话内存本身中。 二级缓存二级缓存负责跨会话缓存对象。 启用第二级缓存后首先在缓存中搜索对象然后如果找不到将执行数据库查询以搜索对象。 每当使用对象的主键加载对象时将使用二级缓存。 二级缓存对象还获取它们各自的关联并驻留在会话以外的单独的内存堆栈中。 查询缓存问题缓存用于存储查询的后效。 在打开查询缓存时查询的输出将与激发的查询和参数放在一起。 每次释放查询时存储框架都会检查参数和查询的混合情况。 如果在缓存中找到结果则将其返回通常会启动数据库事务。 显而易见在具有各种参数的情况下保留查询绝非明智之举因为从那时起单独的参数可能具有各种性质。 对于这些混合中的每一种结果都将保存在内存中。 这会导致更大的内存利用率。 25.如何配置Hibernate二级缓存 可以使用EHCache库配置休眠二级缓存。 要使用maven添加EHCache依赖关系请使用以下依赖关系代码。 dependencygroupIdorg.hibernate/groupIdartifactIdhibernate-ehcache/artifactIdversion4.3.5.Final/version /dependency 添加该库后需要将休眠框架配置为使用该库进行缓存。 为了使用EHCache配置第二级缓存请使用以下代码。 property namehibernate.cache.region.factory_classorg.hibernate.cache.ehcache.EhCacheRegionFactory/property property namehibernate.cache.use_second_level_cachetrue/property property namehibernate.cache.use_query_cachetrue/property property namenet.sf.ehcache.configurationResourceName/myehcache.xml/property26.实体bean的不同状态是什么 可能存在的元素bean是这三种状态之一。 瞬态 当一个对象永不连续或与任何会话相关时它处于瞬态状态。 通过调用save() persist()或saveOrUpdate()可能会影响瞬态情况。 稳定的示例可能会通过调用delete来影响瞬态。 持续性 当一个问题与某类会话相关时它处于坚持不懈的状态。 由get()或load()技术返回的任何事件都是持久的。 分离 当一个对象已经无情但与任何会话无关时它处于分离状态。 通过调用refresh() saveOrUpdate() lock()或replicate()可以确定脱离的场合。 通过调用merge()可以将瞬态或脱开示例的条件作为另一种恒定情况同样地无情地影响。 27. Session.beginTransaction的用途是什么 在Hibernate中每次数据交换都是使用事务维护的。 每当要开始新的数据交换时都会调用Session.beginTransaction函数来启动事务。 28.如何在Hibernate中完成交易 为了在休眠状态下完成事务可以执行两个操作 承诺 回滚 每当提交事务时数据交换都会写入数据库。 如果发生回滚事务数据将被刷新并且永远不会写入或更新到数据库中。 29.我们如何在Hibernate中提交事务 Hibernate中的事务对象可以被提交或回滚。 为了执行此操作我们利用以下代码。 tx Session.beginTransaction(); ... ... ... //Do something with transaction ... ... ... tx.commit(); 可以看出函数调用tx.commit()完成了将事务提交到数据库的任务。 对于回滚过程保持不变。 您需要做的就是将函数调用更改为tx.rollback() 。 30. Hibernate映射提供哪些不同类型的关系 可以在休眠中实现三种不同类型的关系。 他们是 一对一映射 一对多映射 多对多映射 31.哪个注释用于定义Java文件中的映射 为了在Java文件中定义映射可以根据需要使用三种不同的注释。 注释是 OneToOne ManyToOne OneToMany 注释的用法非常清楚。 注释需要一个强制性属性mappedBy来标识相关表。 32.什么是Hibernate Session如何获取它 Hibernate Session是Java代码层和hibernate框架之间的接口。 它是用于处理数据库事务的核心接口。 会话的生命周期从事务的开始开始直到事务结束。 从JPA 2.0开始可以使用以下使用EntityManager代码获取Session对象 SessionFactory sessionFactory entityManager.getEntityManagerFactory().unwrap(SessionFactory.class);33.是否可以使用Hibernate在单个Java应用程序中连接多个数据库 是。 实际上可以使用两个单独的休眠配置文件和两个单独的会话工厂将单个Java应用程序连接到多个数据库。 这些休眠配置文件包含与各自数据库有关的不同方言配置。 实体专门映射到相关的数据库配置。 因此使用两个不同的并行SessionFactory对象可以连接多个数据库。 34.什么是Hibernate中的Criteria查询 Hibernate中的条件查询是一个复杂的休眠查询它使开发人员可以指定多个条件以使用后端中的休眠查询从数据库中获取数据。 使用Criteria对象创建条件查询。 以后将此标准对象与限制条件组合起来以得到最终结果。 下面的代码演示了一个简单的条件查询执行 Criteria cr session.createCriteria(User.class); cr.add(Restrictions.eq(user_name, datsabk)); List results cr.list(); 上面的查询获取具有username属性的值datsabk的用户列表。 因此Criteria类提供了必要的实现以简化使用对象的复杂查询。 35.什么是Hibernate中的延迟加载 如上所述可以使用Hibernate中的注释将实体与其他实体映射。 当您获取此类实体时hibernate能够以两种方式加载关联的实体。 其中之一是将它们与父实体一起加载。 由于涉及的记录的连接和增加这通常很耗时。 另一种加载方式称为延迟加载方式。 延迟加载意味着Hibernate仅在您实际尝试访问关联的实体值时才加载关联的实体。 这不仅可以节省运行时内存而且可以加快查询速度。 36.会话对象的load方法是什么 此方法用于加载代理对象而无需实际访问数据库。 因此它将命中保存到数据库中并从缓存中加载数据。 这是一种告诉休眠从缓存中选择数据的明确方法。 37. Hibernate Session对象是线程安全的吗 Hibernate会话对象是一个全局对象用于管理与数据库的会话。 可以跨线程传递该对象以交换数据。 因此它可以同时被多个线程消耗。 因此它不是线程安全的对象。 38. Hibernate是否支持多态 是。 Hibernate本质上支持多态。 Hibernate类主要通过多态性本身来支持其操作。 39.一个应用程序在任何时间点都存在多少个Hibernate会话 休眠会话是一个共享对象。 在任何时间点仅存在一个共享的会话对象该对象有助于管理事务并从连接池获取连接。 必须注意仅当使用单个数据库配置时这才是正确的。 在有多个数据库配置的情况下Hibernate将创建一个单独的会话对象以维护其他数据库的映射和事务。 结论 这是Hibernate框架中使用的一些最重要的概念和术语的摘要。 回答这些问题的目的是使您准备好面试。 它们捕获了所有重要概念包括休眠框架的配置缓存和实现。 然而总是有更多的探索。 好的现在您可以开始面试了 不要忘记查看我们的示例专用小节 如果您喜欢此功能请订阅我们的时事通讯以享受每周更新和免费白皮书 另外请查看我们的课程以获得更高级的培训 欢迎您提出您的意见我们会将其纳入本文 翻译自: https://www.javacodegeeks.com/2018/08/hibernate-interview-questions-answers-ultimate-list.html
http://wiki.neutronadmin.com/news/289742/

相关文章:

  • dede视频网站模板深圳做网站 信科便宜
  • 网站建设经典案例物流信息网站建设
  • 成都公司的网站制作如何注册网站域名
  • 动易网站 修改栏目名字各国足球世界排名
  • 北京网站优化合作建设银行广州招聘网站
  • 网站建设网站维护网站外包0592 网站建设
  • 西安网站开发公司哪家强wordpress .htaccess 规则
  • 如何在百度上做网站推广wordpress栏目id顺序
  • 雅虎做网站推广工程公司注册条件
  • 青海找人做网站多少钱亿万网站
  • 赣州那里有做网站的公司海安网站建设
  • 推进政务服务网站一体化建设石家庄建筑网
  • 工业和信息化部网站备案系统怎么登录商标注册查询设计类型 vi设计生成
  • 网站内容规范中信建设有限责任公司洪波
  • 廊坊网络公司网站wordpress用户调用
  • 网上医疗和医院网站建设制作拉扎斯网络科技上海有限公司
  • 一个ip地址上可以做几个网站无锡网站建设制作开发
  • 中国效能建设网站关键词上首页的有效方法
  • 内蒙营销型网站建设上海房地产网站官网
  • 做的网站怎么让别人也能看到下载wix做的网站
  • 电子商务网站建设可运用的技术述建设一个网站的具体步骤
  • 沧州哪里做网站免费软件园
  • 做直播网站一定要idc吗重庆建网站一般多少钱
  • 服务好的高端网站建设科技企业网站模板
  • 网站建设写seo综合查询网站源码
  • 盘锦网站网站建设沈阳网上房地产
  • 建设一个网站的基本步骤网站loading动画效果
  • 手机网站怎么dw做邢台123招聘信息网
  • 河南住房和城乡建设厅网站特种wordpress 裁剪图片上传
  • 电影网站的建设目标搜索引擎优化到底是优化什么