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中,关于脏检查和刷新缓存说法正确的是(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)。
JAVA技术综合面试题目(含参考答案)

目录1 Struts框架 (2)2 Spring框架 (8)3 AJAX技术 (14)4 Hibernate框架 (17)5 框架综合运用 (24)6 J2EE初级题目 (27)7 J2SE初级题目 (33)1Struts框架1.Struts框架的整体运行流程在web应用启动时就会加载初始化ActionServlet,ActionServlet从struts-config.xml文件中读取配置信息,把它们存放到各种配置对象,例如:Action的映射信息存放在ActionMapping对象中.当ActionServlet接收到一个客户请求时,将执行如下流程.A.检索和用户请求匹配的ActionMapping实例,如果不存在,就返回请求路径无效信息;B.如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中;C.根据配置信息决定是否需要表单验证.如果需要验证,就调用ActionForm 的validate()方法;D.如果ActionForm的validate()方法返回null或返回一个不包含ActionMessage的ActuibErrors对象,就表示表单验证成功;E. ActionServlet根据ActionMapping所包含的映射信息决定将请求转发给哪个Action,如果相应的Action实例不存在,就先创建这个实例,然后调用Action的execute()方法;F. Action的execute()方法返回一个ActionForward对象,ActionServlet再把客户请求转发给ActionForward对象指向的JSP组件;G. ActionForward对象指向JSP组件生成动态网页,返回给客户2.ActionServlet在Struts框架中的总体作用功能是什么A.在web应用启动时ActionServlet从struts-config.xml文件中读取配置信息,把它们存放到各种配置对象,例如:Action的映射信息存放在ActionMapping对象中。
Hibernate常见面试题汇总

一. H ibern ate工作使用步骤?1.读取并解析配置文件2. 读取并解析映射信息,创建Ses sionF actor y3.打开Sess sion4. 创建事务Tran satio n5.持久化操作6. 提交事务7.关闭Sess ion 8. 关闭Se sstio nFact ory 二.Hib ernat e的查询方式有几种?(1)导航对象图检索方式。
根据已经加载的对象,导航到其他对象。
(2)OID查询方式。
根据对象的O ID来查询对象。
Se ssion的get()和loa d()方法。
(3)HQL查询方式。
HQ L是面向对象的查询语言,ses sion的find()方法用于执行HQL查询语句。
可以利用Q uery接口。
Q ueryquery = se ssion.crea teQue ry(“f rom C ustom er as c wh ere c.name=: c ustom erNam e”);quer y.set Strin g(“cu stome rName”,”张三”);Listresul tList = qu ery.l ist();(4)QBC查询方式。
这种API封装了基于字符串形式的查询语句。
Crit eriacrite ria = sess ion.c reate Crite ria(U ser.c lass);Cr iteri on cr iteri on1 = Expe ssion.like(“nam e”,”T%”);Crite rioncrite rion2 = Ex pessi on.eq(age,new I ntege r(30));cr iteri a =crite ria.a dd(cr iteri on1);crit eria = cr iteri a.add(crit erion2);L ist r esult List= cri teria.list();这种查询方式使用的较少,主要是在查询中需要用户输入一系列的查询条件,如果采用HQL查询代码会比较烦。
测试基本面试题目

软件测试一些基本面试问题1、黑盒测试、白盒测试、单元测试、集成测试、系统测试、验收测试的区别白盒测试:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否以经过检查。
软件的黑盒测试意味着测试要在软件的接口处进行。
这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。
因此黑盒测试又叫功能测试或数据驱动测试。
黑盒测试主要是为了发现以下几类错误:1)是否有不正确或遗漏的功能?2)在接口上,输入是否能正确的接受?能否输出正确的结果?3)是否有数据结构错误或外部信息(例如数据文件)访问错误?4)性能上是否能够满足要求?5)是否有初始化或终止性错误?软件的白盒测试是对软件的过程性细节做细致的检查。
这种方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。
通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。
因此白盒测试又称为结构测试或逻辑驱动测试。
白盒测试主要是想对程序模块进行如下检查:1)对程序模块的所有独立的执行路径至少测试一遍。
2)对所有的逻辑判定,取“真”与取“假”的两种情况都能至少测一遍。
3)在循环的边界和运行的界限内执行循环体。
4)测试内部数据结构的有效性,等等。
单元测试(模块测试)是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。
通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。
单元测试是由程序员自己来完成,最终受益的也是程序员自己。
可以这么说,程序员有责任编写功能代码,同时也就有责任为自己的代码编写单元测试。
执行单元测试,就是为了证明这段代码的行为和我们期望的一致。
集成测试(也叫组装测试,联合测试)是单元测试的逻辑扩展。
它的最简单的形式是:两个已经测试过的单元组合成一个组件,并且测试它们之间的接口。
JAVA面试题大全(含答案)

1. J2EE是什么?它包括哪些技术?解答:从整体上讲,J2EE是使用Java技术开发企业级应用的工业标准,它是Java 技术不断适应和促进企业级应用过程中的产物。
适用于企业级应用的J2EE,提供一个平台独立的、可移植的、多用户的、安全的和基于标准的企业级平台,从而简化企业应用的开发、管理和部署。
J2EE是一个标准,而不是一个现成的产品。
主要包括以下这些技术:1) Servlet Servlet是Java平台上的CGI技术。
Servlet在服务器端运行,动态地生成Web页面。
与传统的CGI和许多其它类似CGI的技术相比,Java Servlet具有更高的效率并更容易使用。
对于Servlet,重复的请求不会导致同一程序的多次转载,它是依靠线程的方式来支持并发访问的。
2)JSP JSP(Java Server Page)是一种实现普通静态HTML和动态页面输出混合编码的技术。
从这一点来看,非常类似Microsoft ASP、PHP等技术。
借助形式上的内容和外观表现的分离,Web页面制作的任务可以比较方便地划分给页面设计人员和程序员,并方便地通过JSP 来合成。
在运行时态,JSP将会被首先转换成Servlet,并以Servlet的形态编译运行,因此它的效率和功能与Servlet相比没有差别,一样具有很高的效率。
3) EJB EJB定义了一组可重用的组件:Enterprise Beans。
开发人员可以利用这些组件,像搭积木一样建立分布式应用。
4)JDBC JDBC(Java Database Connectivity,Java数据库连接)API是一个标准SQL(Structured Query Language,结构化查询语言)数据库访问接口,它使数据库开发人员能够用标准Java API编写数据库应用程序。
JDBC API主要用来连接数据库和直接调用SQL命令执行各种SQL语句。
利用JDBC API可以执行一般的SQL语句、动态SQL语句及带IN和OUT参数的存储过程。
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框架面试题(自己+别人的试题)

(问答题+选择题(在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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.Hibernate工作原理及为什么要用?原理:1.读取并解析配置文件2.读取并解析映射信息,创建SessionFactory3.打开Sesssion4.创建事务Transation5.持久化操作6.提交事务7.关闭Session8.关闭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-many、4.说下Hibernate的缓存机制1. 内部缓存存在Hibernate中又叫一级缓存,属于应用事物级缓存2. 二级缓存:a) 应用及缓存b) 分布式缓存条件:数据不会被第三方修改、数据大小在可接受范围、数据更新频率低、同一数据被系统频繁使用、非关键数据c) 第三方缓存的实现5.Hibernate的查询方式Sql、Criteria,object comptositionHql:1、属性查询2、参数查询、命名参数查询3、关联查询4、分页查询5、统计函数6.如何优化Hibernate?1.使用双向一对多关联,不使用单向一对多2.灵活使用单向一对多关联3.不用一对一,用多对一取代4.配置对象缓存,不使用集合缓存5.一对多集合使用Bag,多对多集合使用Set6. 继承类使用显式多态7. 表字段要少,表关联不要怕多,有二级缓存撑腰////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////答案二:hibernate工作原理:1、通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件。
2、由hibernate.cfg.xml中的<mapping resource="com/xx/User.hbm.xml"/>读取解析映射信息。
3、通过config.buildSessionFactory();//得到sessionFactory。
4、sessionFactory.openSession();//得到session。
5、session.beginTransaction();//开启事务。
6、persistent operate;6、session.getTransaction().commit();//提交事务7、关闭session;8、关闭sessionFactory;hibernate优点:1、封装了jdbc,简化了很多重复性代码。
2、简化了DAO层编码工作,使开发更对象化了。
3、移植性好,支持各种数据库,如果换个数据库只要在配置文件中变换配置就可以了,不用改变hibernate代码。
4、支持透明持久化,因为hibernate操作的是纯粹的(pojo)java类,没有实现任何接口,没有侵入性。
所以说它是一个轻量级框架。
hibernate延迟加载:get不支持延迟加载,load支持延迟加载。
1、hibernate2对实体对象和集合实现了延迟加载2、hibernate3对提供了属性的延迟加载功能hibernate延迟加载就是当使用session.load(User.class, 1)或者session.create Query()查询对象或者属性的时候这个对象或者属性并没有在内存中,只有当程序操作数据的时候,才会存在内存中,这样就实现延迟加载,节省了内存的开销,从而提高了服务器的性能。
Hibernate的缓存机制一级缓存:session级的缓存也叫事务级的缓存,只缓存实体,生命周期和ses sion一致。
不能对其进行管理。
不用显示的调用。
二级缓存:sessionFactory缓存,也叫进程级的缓存,使用第3方插件实现的,也值缓存实体,生命周期和sessionFactory一致,可以进行管理。
首先配置第3放插件,我们用的是EHCache,在hibernate.cfg.xml文件中加入<property name="er_second_level_cache">true</property >在映射中也要显示的调用,<cache usage="read-only"/>二级缓存之查询缓存:对普通属性进行缓存。
如果关联的表发生了修改,那么查询缓存的生命周期也结束了。
在程序中必须手动启用查询缓存:query.setCacheable(true);优化Hibernate1、使用一对多的双向关联,尽量从多的一端维护。
2、不要使用一对一,尽量使用多对一。
3、配置对象缓存,不要使用集合缓存。
4、表字段要少,表关联不要怕多,有二级缓存撑腰。
(1)一般情况下,关系数据模型与对象模型之间有哪些匹配关系(多选)A)表对应类B)记录对应对象C)表的字段对应类的属性(2)以下关于SessionFactory的说法哪些正确?(多选))一个SessionFactory对象对应一个数据库存储源。
C)SessionFactory是重量级的对象,不应该随意创建。
如果系统中只有一个数据库存储源,只需要创建一个(3)Customer类中有一个Set类型的orders属性,用来存放Order订单对象,在Customer.hbm.xml文件中,用哪个元素映射orders属性?A) B) C) D)<:property>(4)元素有一个cascade属性,如果希望Hibernate级联保存集合中的对象,c asecade属性应该取什么值?(单选))save-update(5)以下哪些属于Session的方法?A)load()B)save()C)delete()D)update()E)open()F)close()(6)以下程序的打印结果是什么?(单选)1. tx = session.beginTransaction();2. Customer c1=(Customer)session.load(Customer.class,new Long(1));3. Customer c2=(Customer)session.load(Customer.class,new Long(1));4. System.out.println(c1==c2);5. mit();6. session.close();打印true(7)以下程序代码对Customer的name属性修改了两次:1. tx = session.beginTransaction();2. Customer customer=(Customer)session.load(Customer.class,3. new Long(1));4. customer.setName(\"Jack\");5. customer.setName(\"Mike\");6. mit();执行以上程序,Hibernate需要向数据库提交几条update语句?(单选)B,1(8)在持久化层,对象分为哪些状态?(多选)A)临时状态C)游离状态D)持久化状态(9)对于以下程序,Customer对象在第几行变为持久化状态?(单选)1. Customer customer=new Customer(); //line12. customer.setName(\"Tom\"); //line23. Session session1=sessionFactory.openSession(); //line34. Transaction tx1 = session1.beginTransaction(); //line45. session1.save(customer); //line46. mit(); //line57. session1.close(); //line6A) line1 B)line2 C)line3 D)line4 E)line5 F)line6(10)对于以下程序,Customer对象在第几行变为游离状态?(单选)1. Customer customer=new Customer(); //line12. customer.setName(\"Tom\"); //line23. Session session1=sessionFactory.openSession(); //line34. Transaction tx1 = session1.beginTransaction(); //line45. session1.save(customer); //line46. mit(); //line57. session1.close(); //line6)line6(11)以下哪一种检索策略利用了外连结查询?(单选)A)立即检索B)延迟检索C)迫切左外连结检索(12)假设对Customer类的orders集合采用延迟检索策略,编译或运行以下程序,会出现什么情况(单选)1. Session session=sessionFactory.openSession();2. tx = session.beginTransaction();3. Customer customer=(Customer)session.get(Customer.class,new Long(1));4. mit();5. session.close();6. Iterator orderIterator=customer.getOrders().iterator();A)编译出错B)编译通过,并正常运行C)编译通过,但运行时抛出异常(13)关于HQL与SQL,以下哪些说法正确?(多选)A)HQL与SQL没什么差别B)HQL面向对象,而SQL操纵关系数据库C)在HQL与SQL中,都包含select,insert,update,delete语句D)HQL仅用于查询数据,不支持insert,update和delete语句(14)事务隔离级别是由谁实现的?(单选)A)Java应用程序B)Hibernate C)数据库系统D)JDBC驱动程序(15)悲观锁与乐观锁,哪个具有较好的并发性能?(单选)A)悲观锁B)乐观锁答案:(1)A,B,C (2)B,C (3)A (4)D (5)A,B,C,D,F (6)C (7)B (8)A,C,D (9)D (10)F (11)C (12)C (13)B,D (14)C (15)BHibernate对象的三种状态是什么?瞬时态(Transient)、持久态(Persistent)、脱管态(Detached)。