hibernate框架必问的面试题

合集下载

软件开发框架(J2EE)Hibernate概述习题与答案

软件开发框架(J2EE)Hibernate概述习题与答案

一、多选题1.在Hibernate 主配置文件(hibernate.cfg.xml)中,以下哪个元素()为它的根元素。

A.<hibernate-configuration>元素B.<session-factory>元素C.<property>元素D.<mapping>元素E.<hibernate-mapping>元素2.在Hibernate 主配置文件(hibernate.cfg.xml)中,是通过哪个元素()来配置映射文件的。

A.<hibernate-configuration>元素B.<session-factory>元素C.<property>元素D.<mapping>元素E.<hibernate-mapping>元素3.下面关于Hibernate 的映射文件说法正确的有哪些()。

A.Hibernate 是以xml 格式的文件来指定对象与关系数据之间的映射B.在hibernate.cfg.xml文件中可以配置<mapping>元素的resource属性来指定映射文件C.配置映射文件时,需要遵循它对应的DTD 文件格式D.在映射文件中,<class>元素的<id>子元素只能出现一次E.<id>元素的<generator>子元素用来设定标识符生成器4.在Hibernate 的映射文件中,<id>元素的<generator>子元素用来设定标识符生成器,以下对常用的标识符生成器的用法说法正确的是()。

A.increment:适用于代理主键。

用于为long, short 或者int 类型生成唯一标识B.identity:适用于代理主键。

由底层数据库生成标识符C.sequence:适用于代理主键。

Hibernate 根据底层数据库的序列来生成标识符D.hilo:使用一个高/低位算法高效的生成long、short 或者int 类型的标识符E.seqhilo:使用一个高/低位算法来高效的生成long、short 或者int 类型的标识符,给定一个数据库序列(sequence)的名字5.Hibernate 采用xml 文件来配置对象—关系映射有哪些好处()。

hibernate内部测试题总结

hibernate内部测试题总结

hibernate内部测试题总结在Hibernate中,关于脏检查和刷新缓存说法正确的是(ab )。

A.当事务提交时,会发⽣脏检查B.Session的flush( )⽅法是刷新缓存的⽅法C.在执⾏Session的commit( )⽅法之前不会调⽤Session的flush( )⽅法D.编写代码时,调⽤commit( )⽅法之前要调⽤flush( )⽅法解析:在执⾏Session的commit()⽅法之前会调⽤Session的flush()⽅法 C错误 调⽤commit()⽅法都不是⼿动调⽤flush()⽅法使⽤HQL查询所有部门信息,以下正确的是( b)。

A.from DeptB.select * from cn.jbit.demo.entity.DeptC.select Dept from cn.jbit.demo.entity.Dept dD.select d from Dept d解析:HQL查询信息没有 *关于Query接⼝的list( )和iterate( )⽅法,说法正确的是( ad)。

A.执⾏list( )⽅法,查询所有符合条件的记录B.执⾏iterate( )⽅法,查询所有符合条件的记录C.执⾏list( )⽅法,查询出所有符合条件的主键值D.执⾏iterate ( )⽅法,查询出所有符合条件的主键值解析:list()是查询⼿游符合条件的记录 iterate()是查询出所有符合条件的5.在HQL中,关于Query接⼝绑定参数的⽅法,说法正确的是( ABCD)。

A.setParameter( )⽅法⽤于绑定任意类型的参数B.setParameter( )有重载的⽅法C.setProperties( )有重载的⽅法D.setProperties( )⽅法⽤于绑定命名参数6.在Hibernate中,关于以下映射配置,说法错误的是(D)。

<hibernate-mapping><class name="cn.jbit.hibernatedemo.entity.Emp" table="EMP" schema="scott"> <id name="empNo" column="EMPNO" type="ng.Integer"><generator class="assigned"/></id><property name="salary" type="ng.Double" column="SAL"/><property name="hireDate" type="java.util.Date"/><many-to-onename="dept"column="DEPTNO"class="cn.jbit.hibernatedemo.entity.Dept"/></class></hibernate-mapping>A.此配置信息描述了cn.jbit.hibernatedemo.entity.Emp类和EMP表的映射B.描述的是scott⽤户的EMP表C.<many-to-one>标签中的name属性值dept是cn.jbit.hibernatedemo.entity.Emp类的属性名D.<many-to-one>标签中的column属性值DEPTNO是dept表的主键名解析:D选项中column属性值deptNo是emp表中的外键列7.在Hibernate映射⽂件中,关于inverse属性说法正确的是(ACD)。

Hibernate常见面试题汇总

Hibernate常见面试题汇总

一. ‎H iber‎n ate工‎作使用步骤‎?1.‎‎读‎取并解析配‎置文件‎2. ‎‎读取并解‎析映射信息‎,创建Se‎s sion‎F acto‎r y3‎.‎‎打开Ses‎s sion‎4. ‎‎创建‎事务Tra‎n sati‎o n5‎.‎‎持久化操作‎6. ‎‎提交‎事务7‎.‎‎关闭Ses‎s ion ‎8. ‎‎关闭S‎e ssti‎o nFac‎t ory ‎二.Hi‎b erna‎t e的查询‎方式有几种‎?(1)‎导航对象图‎检索方式。

‎根据已经加‎载的对象,‎导航到其他‎对象。

(‎2)OID‎查询方式。

‎根据对象的‎O ID来查‎询对象。

S‎e ssio‎n的get‎()和lo‎a d()方‎法。

(3‎)HQL查‎询方式。

H‎Q L是面向‎对象的查询‎语言,se‎s sion‎的find‎()方法用‎于执行HQ‎L查询语句‎。

可以利用‎Q uery‎接口。

‎Q uery‎quer‎y = s‎e ssio‎n.cre‎a teQu‎e ry(“‎f rom ‎C usto‎m er a‎s c w‎h ere ‎c.nam‎e=: ‎c usto‎m erNa‎m e”);‎que‎r y.se‎t Stri‎n g(“c‎u stom‎e rNam‎e”,”张‎三”);‎List‎resu‎l tLis‎t = q‎u ery.‎l ist(‎);(4‎)QBC查‎询方式。

这‎种API封‎装了基于字‎符串形式的‎查询语句。

‎Cri‎t eria‎crit‎e ria ‎= ses‎s ion.‎c reat‎e Crit‎e ria(‎U ser.‎c lass‎);C‎r iter‎i on c‎r iter‎i on1 ‎= Exp‎e ssio‎n.lik‎e(“na‎m e”,”‎T%”);‎Crit‎e rion‎crit‎e rion‎2 = E‎x pess‎i on.e‎q(age‎,new ‎I nteg‎e r(30‎));c‎r iter‎i a =‎crit‎e ria.‎a dd(c‎r iter‎i on1)‎;cri‎t eria‎ = c‎r iter‎i a.ad‎d(cri‎t erio‎n2);‎L ist ‎r esul‎t List‎= cr‎i teri‎a.lis‎t();‎这种查询方‎式使用的较‎少,主要是‎在查询中需‎要用户输入‎一系列的查‎询条件,如‎果采用HQ‎L查询代码‎会比较烦。

Spring系列面试题(附答案)

Spring系列面试题(附答案)

Spring系列⾯试题(附答案)1、不同版本的 Spring Framework 有哪些主要功能?2、什么是 Spring Framework?Spring 是⼀个开源应⽤框架,旨在降低应⽤程序开发的复杂度。

它是轻量级、松散耦合的。

它具有分层体系结构,允许⽤户选择组件,同时还为 J2EE 应⽤程序开发提供了⼀个有凝聚⼒的框架。

它可以集成其他框架,如Structs、Hibernate、EJB 等,所以⼜称为框架的框架。

3、列举 Spring Framework 的优点。

由于 Spring Frameworks 的分层架构,⽤户可以⾃由选择⾃⼰需要的组件。

Spring Framework ⽀持 POJO(Plain Old Java Object) 编程,从⽽具备持续集成和可测试性。

由于依赖注⼊和控制反转,JDBC 得以简化。

它是开源免费的。

4、Spring Framework 有哪些不同的功能?轻量级 - Spring 在代码量和透明度⽅⾯都很轻便。

IOC - 控制反转AOP - ⾯向切⾯编程可以将应⽤业务逻辑和系统服务分离,以实现⾼内聚。

?容器 - Spring 负责创建和管理对象(Bean)的⽣命周期和配置。

MVC - 对 web 应⽤提供了⾼度可配置性,其他框架的集成也⼗分⽅便。

?事务管理- 提供了⽤于事务管理的通⽤抽象层。

Spring 的事务⽀持也可⽤于容器较少的环境。

JDBC 异常 - Spring的 JDBC 抽象层提供了⼀个异常层次结构,简化了错误处理策略。

5、Spring Framework 中有多少个模块,它们分别是什么?Spring 核⼼容器–该层基本上是Spring Framework 的核⼼。

它包含以下模块:· Spring Core· Spring Bean· SpEL (Spring Expression Language)· Spring Context数据访问/集成–该层提供与数据库交互的⽀持。

EJB面试题目

EJB面试题目

1. EJB是:[B]A. 服务器端产品B. 服务器端组件开发架构C. 特殊类型的JavaBeanD. 用于实现商业逻辑2. EJB架构主要使用的设计模式是:[AC]A. Proxy 代理B. StrategyC. Delegate 委派D. Responsibility Chain3. EJB的类型主要有:[CDF]A. Command BeanB. Data Access BeanC. Session BeanD. Entity BeanE. Java BeanF. Message-Driven Bean4. Session Bean的组成可以包括:[ACEFGI]A. Home interfaceB. A thread classC. Remote interfaceD. Primary key classE. Local home interfaceF. Local interfaceG. ejb-jar.xmlH. application.xmlI. Bean class5. Entity Bean的组成可以包括:[ACDEFGI]A. Home interfaceB. web.xmlC. Remote interfaceD. Primary key classE. Local home interfaceF. Local interfaceG. ejb-jar.xmlH. ejb.xmlI. Bean class6. Session Bean按是否跟踪客户状态分:[BE]A. State Session BeanB. Stateless Session Bean 无状态会话C. BMT Session BeanD. CMT Session BeanE. Stateful Session Bean 有状态会话7. Entity Bean根据数据持久性的处理方式分:BCA. BMT Entity BeanB. BMP Entity BeanC. CMP Entity BeanD. CMT Entity Bean8. Entity Bean的事务处理方式可采用:CA. BMPB. BMTC. CMTD. CMP9. Session Bean和Message-Driven Bean的事务处理方式可采用: BA. BMT和CMPB. BMT和CMTC. BMP和CMPD. BMP和CMT10. 申明方式的事务处理的属性有:ACDFGHA. SupportsB. ShouldC. NotSupportedD. RequiredE. MaybeF. RequiresNewG. MandatoryH. Never11. Local interface引入的目的是: BA. 本地客户程序才能调用EJBB. 为了性能C. 解决Session Bean与Enity Bean之间的交互12. 对于Session Bean和Entity Bean, 为远程用户定义的home interface必须继承B, component interface必须继承D;为本地客户定义的home interface必须继承F, component interface必须继承A ;Session Bean的bean class必须实现C , Entity Bean的bean class 必须实现 EA. EJBLocalObjectB. EJBHomeC. SessionBeanD. EJBObjectE. EntityBeanF. EJBLocalHome13. Message-Driven Bean的Bean Class必须实现BC ;bean class中服务方法的签名是A。

1000道互联网Java架构师面试题

1000道互联网Java架构师面试题

互联网Java工程师面试题内容涵盖:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Spring、Spring Boot、Spring Cloud、RabbitMQ、Kafka、Linux等技术栈目录互联网Java工程师面试题 (1) (1)MyBatis面试题 (33)1、什么是Mybatis? (33)2、Mybaits的优点: (33)3、MyBatis框架的缺点: (34)4、MyBatis框架适用场合: (34)5、MyBatis与Hibernate有哪些不同? (35)6、#{}和${}的区别是什么? (35)7、当实体类中的属性名和表中的字段名不一样,怎么办? (35)8、模糊查询like语句该怎么写? (36)9、通常一个Xml映射文件,都会写一个Dao接口与之对应,请问,这个Dao接口的工作原理是什么?Dao接口里的方法,参数不同时,方法能重载吗? (37)10、Mybatis是如何进行分页的?分页插件的原理是什么? (38)11、Mybatis是如何将sql执行结果封装为目标对象并返回的?都有哪些映射形式? (38)12、如何执行批量插入? (39)13、如何获取自动生成的(主)键值? (40)14、在mapper中如何传递多个参数? (40)15、Mybatis动态sql有什么用?执行原理?有哪些动态sql? (42)16、Xml映射文件中,除了常见的select|insert|updae|delete标签之外,还有哪些标签? (42)18、为什么说Mybatis是半自动ORM映射工具?它与全自动的区别在哪里? (43)19、一对一、一对多的关联查询? (43)20、MyBatis实现一对一有几种方式?具体怎么操作的? (45)21、MyBatis实现一对多有几种方式,怎么操作的? (45)22、Mybatis是否支持延迟加载?如果支持,它的实现原理是什么?4623、Mybatis的一级、二级缓存: (46)24、什么是MyBatis的接口绑定?有哪些实现方式? (47)25、使用MyBatis的mapper接口调用时有哪些要求? (47)26、Mapper编写有哪几种方式? (47)27、简述Mybatis的插件运行原理,以及如何编写一个插件。

web_框架面试题目(3篇)

web_框架面试题目(3篇)

第1篇一、引言随着互联网技术的飞速发展,Web框架在软件开发中扮演着越来越重要的角色。

掌握一门优秀的Web框架不仅能够提高开发效率,还能提升代码质量。

本面试题目将从多个角度对Web框架进行深入解析,并辅以实战案例,帮助您在面试中脱颖而出。

二、基础知识1. 什么是Web框架?Web框架是一套软件架构,它提供了一套标准的开发模式,用于构建Web应用程序。

它通常包含路由、模板、数据库交互、会话管理等功能。

2. 常见的Web框架有哪些?- Python:Django、Flask、Pyramid- Ruby:Ruby on Rails- PHP:Laravel、Symfony- Java:Spring MVC、Struts2- JavaScript:Express、Koa3. Web框架的核心组件有哪些?- 路由(Routing):根据请求的URL,将请求映射到对应的控制器或函数。

- 模板引擎(Template Engine):将数据渲染到HTML模板中。

- 数据库ORM(Object-Relational Mapping):将对象映射到数据库表。

- 会话管理(Session Management):管理用户会话信息。

- 中间件(Middleware):在请求处理过程中添加额外的处理逻辑。

三、面试题目1. Python Web框架:Django- 题目1:简述Django的MVC模式与传统的MVC模式有何不同?- 解析:Django采用MVC模式,但与传统的MVC模式相比,Django将模型(Model)和视图(View)进行了合并,形成了一个更紧凑的框架结构。

- 题目2:解释Django中的`__init__.py`文件的作用。

- 解析:`__init__.py`文件用于初始化Python包,确保Django能够正确加载应用程序中的模块。

- 题目3:简述Django中ORM的基本用法。

- 解析:Django的ORM允许开发者使用Python代码操作数据库,而不需要编写SQL语句。

SSH框架面试题(自己+别人的试题)

SSH框架面试题(自己+别人的试题)

(问答题+选择题(在55页))Java工程师(程序员)面题Struts,Spring,Hibernate三大框架1.Hibernate工作原理及为什么要用?原理:1.读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory 3.打开Session 4.创建事务Transation 5.持久化操作6.提交事务7.关闭Session 8.关闭SesstionFactory为什么要用:1. 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。

2. Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。

他很大程度的简化DAO层的编码工作3. hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。

4. hibernate的性能非常好,因为它是个轻量级框架。

映射的灵活性很出色。

它支持各种关系数据库,从一对一到多对多的各种复杂关系。

2.Hibernate是如何延迟加载?1. Hibernate2延迟加载实现:a)实体对象b)集合(Collection)2. Hibernate3 提供了属性的延迟加载功能当Hibernate在查询数据的时候,数据并没有存在与内存中,当程序真正对数据的操作时,对象才存在与内存中,就实现了延迟加载,他节省了服务器的内存开销,从而提高了服务器的性能。

3.Hibernate中怎样实现类之间的关系?(如:一对多、多对多的关系)类与类之间的关系主要体现在表与表之间的关系进行操作,它们都是对对象进行操作,我们程序中把所有的表与类都映射在一起,它们通过配置文件中的many-to-one、one-to-many、many-to-many4.Struts1流程:1、客户端浏览器发出HTTP请求。

2、根据web.xml配置,该请求被ActionServlet接收。

3、根据struts-config.xml配置,ActionServlet先将请求中的参数填充到ActionForm中,然后ActionServlet再将请求发送到Action 进行处理。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

108.为什么要使用 hibernate?
hibernate 是对 jdbc 的封装,大大简化了数据访问层的繁琐的重复性代码。

hibernate 是一个优秀的 ORM 实现,很多程度上简化了 DAO 层的编码功能。

可以很方便的进行数据库的移植工作。

提供了缓存机制,是程序执行更改的高效。

109.什么是 ORM 框架?
ORM(Object Relation Mapping)对象关系映射,是把数据库中的关系数据映射成为程序中的对象。

使用 ORM 的优点:提高了开发效率降低了开发成本、开发更简单更对象化、可移植更强。

115.hibernate 中如何在控制台查看打印的 SQL 语句?
在 Config 里面把 hibernate. show_SQL 设置为 true 就可以。

但不建议开启,开启之后会降低程序的运行效率。

116.hibernate 有几种查询方式?
三种:hql、原生 SQL、条件查询 Criteria。

117.hibernate 实体类可以被定义为 final 吗?
实体类可以定义为 final 类,但这样的话就不能使用 hibernate 代理模式下的延迟关联提供性能了,所以不建议定义实体类为 final。

118.在 hibernate 中使用 Integer 和 int 做映射有什么区别?
Integer 类型为对象,它的值允许为 null,而 int 属于基础数据类型,值不能为 null。

119.hibernate 是如何工作的?
读取并解析配置文件。

读取并解析映射文件,创建 SessionFactory。

打开 Session。

创建事务。

进行持久化操作。

提交事务。

关闭 Session。

关闭 SessionFactory。

120.get()和 load()的区别?
数据查询时,没有 OID 指定的对象,get() 返回 null;load() 返回一个代理对象。

load()支持延迟加载;get() 不支持延迟加载。

121.说一下 hibernate 的缓存机制?
hibernate 常用的缓存有一级缓存和二级缓存:
一级缓存:也叫 Session 缓存,只在 Session 作用范围内有效,不需要用户干涉,由 hibernate 自身维护,可以通过:evict(object)清除 object 的缓存;clear()清除一级缓存中的所有缓存;flush()刷出缓存;
二级缓存:应用级别的缓存,在所有 Session 中都有效,支持配置第三方的缓存,如:EhCache。

122.hibernate 对象有哪些状态?
临时/瞬时状态:直接 new 出来的对象,该对象还没被持久化(没保存在数据库中),不受 Session 管理。

持久化状态:当调用 Session 的 save/saveOrupdate/get/load/list 等方法的时候,对象就是持久化状态。

游离状态:Session 关闭之后对象就是游离状态。

123.在 hibernate 中 getCurrentSession 和 openSession 的区别是什么?
getCurrentSession 会绑定当前线程,而 openSession 则不会。

getCurrentSession 事务是 Spring 控制的,并且不需要手动关闭,而 openSession 需要我们自己手动开启和提交事务。

124.hibernate 实体类必须要有无参构造函数吗?为什么?
hibernate 中每个实体类必须提供一个无参构造函数,因为 hibernate 框架要使用 reflection api,通过调用 ClassnewInstance() 来创建实体类的实例,如果没有无参的构造函数就会抛出异常。

相关文档
最新文档