struts2 spring hibernat 面试题目
- 格式:doc
- 大小:93.50 KB
- 文档页数:19
hibernate面试题大全Hibernate是一个开源的、轻量级的ORM(对象关系映射)框架,广泛应用于Java应用程序的数据持久层。
在Hibernate的使用过程中,面试官可能会问到各种与Hibernate相关的问题。
本文将为您总结一些常见的Hibernate面试题,帮助您更好地准备面试。
以下是Hibernate面试题大全:1. 什么是Hibernate?它的主要特点是什么?Hibernate是一个用于Java平台的ORM框架,全称为Hibernate ORM(Object-Relational Mapping)。
它的主要特点包括:- 简化了数据持久化的过程,将Java对象与数据库表之间的映射关系进行自动管理。
- 支持面向对象的数据操作,不再需要编写大量的SQL语句,提高了开发效率。
- 提供了对多种数据库的支持,使得应用程序在切换不同数据库时更加方便。
- 具备高度的可定制性和扩展性,开发者可以通过配置文件或注解来定义对象和表之间的映射关系,以及其他一些高级特性。
2. Hibernate的工作原理是什么?Hibernate的工作原理主要包括以下几个步骤:- 配置:通过Hibernate配置文件定义数据库连接信息、映射文件、缓存配置等。
- 加载:当应用程序需要访问数据库时,Hibernate根据配置文件中的信息加载SessionFactory,并根据映射文件生成必要的SQL语句和对象关系。
- 映射:Hibernate将Java对象与数据库表之间的映射关系进行管理,包括属性的映射、关联关系的映射等。
- CRUD操作:通过Session对象进行对数据库的操作,包括增删改查等。
- 缓存:Hibernate具备一级缓存和二级缓存,提高了数据访问的性能。
- 事务管理:Hibernate支持事务管理,开发者可以通过编程或配置的方式实现对事务的控制。
3. Hibernate中的SessionFactory和Session有什么区别?SessionFactory是Hibernate的一个重要接口,负责创建和关闭Session对象。
hibernate 面试题Hibernate面试题Hibernate是一种开源的Java持久化框架,可用于处理对象与关系数据库之间的映射和数据查询。
在Hibernate面试中,面试官通常会考察候选人对Hibernate的理解、常见问题的解决方案以及最佳实践等方面的知识。
以下是一些常见的Hibernate面试题及其答案,帮助你更好地准备面试。
1. 什么是Hibernate?Hibernate是一种开源的Java持久化框架,它通过对象和数据库表之间的映射,简化了数据持久化的过程。
它提供了一个面向对象的查询语言(HQL),并且支持事务管理、缓存以及延迟加载等功能。
2. Hibernate的优点有哪些?- 简化开发:Hibernate提供了对象与数据库表之间的映射,开发人员可以使用面向对象的方式操作数据库,大大简化了开发工作。
- 高度可移植性:Hibernate是基于标准的Java持久化API(JPA)开发的,可以在不同的数据库中使用,而不需要更改代码。
- 性能优化:Hibernate提供了缓存机制、延迟加载等功能,可以提高应用程序的性能。
- 强大的查询语言:Hibernate提供了HQL,可以通过面向对象的方式查询数据库,具有更好的灵活性和可读性。
3. Hibernate中的Session和SessionFactory有什么区别?- Session:Session是Hibernate与数据库交互的核心接口,它代表了一次与数据库的会话,负责数据库的增删改查操作。
- SessionFactory:SessionFactory是一个重量级的对象,负责创建Session对象,通常在应用程序启动时创建,并在应用程序关闭时销毁。
SessionFactory是线程安全的,可以被多个线程共享。
4. Hibernate中的对象状态有哪些?Hibernate中的对象状态包括:- 瞬时态(Transient):当一个对象被创建时,它处于瞬时态。
1.Eclipse是IMB公司向开放源代码社区捐献的Java程序开发平台,是一个成熟的、可扩展的体系结构。
2.Eclipse主要包含3个子项目:平台子项目,Java开发工具子项目,插件开发环境子项目。
3.MVC是Model(模型)业务逻辑层,View(试图)表述层,Controller(控制)控制层。
4.Struts是Apache Jakarta项目于2001年推出的一个开元的Java Web框架,通过一个配置文件,把各个层面的应用组件联系起来,使组件在程序层面上联系较少,耦合度较低,提高了应用程序的可维护性和扩展性。
5. Struts框架有两种发行包:源代码(source)和二进制(binary)。
6. Struts框架大约由300个Java类组成,可分为8个核心包:config,action,actions,tiles,upload,taglib,util,validator。
7. Struts的核心API包括ActionServlet,ActionForm,Action,ActionMapping及ActionForward,它们构成了Struts框架中的控制器组件,视图组件,模型组件8.Hibernate是对象/关系映射(ORM)的解决方案,就是将Java对象与对象关系映射成关系数据库中表格与表格之间的关系。
9. Cache就是缓存,它往往是提高系统性能的在最重要手段,对数据起到一个蓄水池和缓冲的作用。
10. Session实现了第一级Cache,它属于事务级数据缓冲,二级Cache是SessionFactory范围内的缓冲,所有的Session共享同一个二级Cache。
11.设置Hibernate的二级Cache需要分两部进行:首先确认使用什么数据并发策略,然后设置缓存过期时间和设置Cache提供器。
12.Spring是指一个用于构造Java应用程序的轻量级框架。
13.IoC是一种将组件依赖关系的创建和管理置于程序外部的技术。
Struts1+Struts2+Spring+Hibernate+iBatis一.Struts1.谈谈你mvc的理解MVC是Model—View—Controler的简称。
即模型—视图—控制器。
MVC是一种设计模式,它强制性的把应用程序的输入、处理和输出分开。
MVC中的模型、视图、控制器它们分别担负着不同的任务。
视图: 视图是用户看到并与之交互的界面。
视图向用户显示相关的数据,并接受用户的输入。
视图不进行任何业务逻辑处理。
模型: 模型表示业务数据和业务处理。
相当于JavaBean。
一个模型能为多个视图提供数据。
这提高了应用程序的重用性控制器: 当用户单击Web页面中的提交按钮时,控制器接受请求并调用相应的模型去处理请求。
然后根据处理的结果调用相应的视图来显示处理的结果。
MVC的处理过程:首先控制器接受用户的请求,调用相应的模型来进行业务处理,并返回数据给控制器。
控制器调用相应的视图来显示处理的结果。
并通过视图呈现给用户。
2.struts1.2和struts2.0的区别?如何控制两种框架中的单例模式?struts1.2和struts2.0的对比a、Action类:struts1.2要求Action类继承一个基类。
struts2.0 Action要求继承ActionSupport基类b、线程模式struts1.2 Action是单例模式的并且必须是线程安全的,因为仅有一个Action的实例来处理所有的请求。
单例策略限制了Struts1.2 Action能做的事情,并且开发时特别小心。
Action资源必须是线程安全的或同步的。
struts2.0 Action为每一个请求产生一个实例,因此没有线程安全问题。
c、Servlet依赖struts1.2 Action依赖于Servlet API,因为当一个Action被调用时HttpServletRequest 和HttpServletResponse被传递给execut方法。
几道关于spring和hibernate的面试题问题:几道关于spring和hibernate的面试题回答:1、简述你对IoC(Inversion of Control)的理解,描述一下Spring中实现DI(Dependency Injection)的几种方式。
2、Spring提倡面向接口编程,请讲一下你对它的理解,它有什么好处。
3、Spring的Bean有哪些作用域。
4、简单描述Spring Framework与Struts的不同之处,整合Spring与Struts有哪些方法,哪种最好,为什么?5、Rails中大量使用Convention over Configuration的思想,SpringMVC在2.0后也引入了CoC,请简单描述一下SpringMVC 的CoC。
6、Hibernate中的update()和saveOrUpdate()的区别,session的load()和get()的区别。
7、Spring对多种ORM框架提供了很好的支持,简单描述在Spring中使用Hibernate的方法,并结合事务管理。
8、简述Spring的事务传播行为和隔离级别。
答案:1、好莱坞原则——不要打电话找我,我会打给你的。
IoC将创建的职责从应用程序代码搬到了框架中。
Spring对Setter注入和构造方法注入提供支持。
(详见/articles/injection.html,以及/spring_ref/2.0/html/beans.html#bea ns-factory-collaborators)2、在一个面向对象的系统中,系统的各种功能是由许许多多的不同对象协作完成的。
在这种情况下,各个对象内部是如何实现自己的对系统设计人员来讲就不那么重要了;而各个对象之间的协作关系则成为系统设计的关键。
小到不同类之间的通信,大到各模块之间的交互,在系统设计之初都是要着重考虑的,这也是系统设计的主要工作内容。
(详见/deve/415943.html)3、singleton、prototype、request、session、global session、自定义(详见Spring Framework 2.0 Reference的3.4节bean的作用域)4、Spring是完整的一站式框架,而Struts仅是MVC框架,且着重于MVC中的C。
一、Spring框架的优点都有什么?Spring是分层的架构,你可以选择使用你需要的层而不用管不需要的部分Spring是POJO编程,POJO编程使得可持续构建和可测试能力提高依赖注入和IoC使得JDBC操作简单化Spring是开源的免费的Spring使得对象管理集中化合简单化二、描述一下Spring中实现DI(Dependency Injection)的几种方式方式一:接口注入,在实际中得到了普遍应用,即使在IOC的概念尚未确立时,这样的方法也已经频繁出现在我们的代码中。
方式二:Type2 IoC: Setter injection对象创建之后,将被依赖对象通过set方法设置进去方式三:Type3 IoC: Constructor injection对象创建时,被依赖对象以构造方法参数的方式注入Spring的方式三、简述你对IoC(Inversion of Control)的理解一个类需要用到某个接口的方法,我们需要将类A和接口B的实现关联起来,最简单的方法是类A中创建一个对于接口B的实现C的实例,但这种方法显然两者的依赖(Dependency)太大了。
而IoC的方法是只在类A中定义好用于关联接口B的实现的方法,将类A,接口B和接口B的实现C放入IoC的容器(Container)中,通过一定的配置由容器(Container)来实现类A与接口B的实现C的关联。
四、Spring对多种ORM框架提供了很好的支持,简单描述在Spring中使用Hibernate的方法。
在context中定义DataSource,创建SessionFactoy,设置参数;DAO类继承HibernateDaoSupport,实现具体接口,从中获得HibernateTemplate进行具体操作。
在使用中如果遇到OpenSessionInView的问题,可以添加OpenSessionInViewFilter或OpenSessionInViewInterceptor五、请介绍一下Spring的事务管理spring提供了几个关于事务处理的类:TransactionDefinition //事务属性定义TranscationStatus //代表了当前的事务,可以提交,回滚。
java常用框架面试题
在Java开发中,一些常用的框架包括Spring、Hibernate、Struts等。
以下是针对这些框架的一些面试问题:
1. 什么是Spring框架?它在Java开发中的重要性是什么?
2. 在Spring框架中,你如何实现依赖注入?有哪些实现方式?
3. 什么是Spring的IoC容器?它如何工作?
4. 什么是Spring的AOP?它如何实现面向切面编程?
5. 如何在Spring框架中使用HQL(Hibernate Query Language)进行查询?
6. Hibernate的懒加载是如何实现的?它的优缺点是什么?
7. 如何进行数据库连接池的配置和优化?在Java和Hibernate中如何使用?
8. Struts框架的工作原理是什么?请简要描述MVC模式在Struts中的应用。
9. 在Struts中,如何处理表单验证?你通常使用哪种方式?
10. 请解释一下Spring MVC和Struts2的区别和优劣。
这些问题可以帮助你了解应聘者对Java常用框架的了解程度,以及他们在实际项目中的使用经验。
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配置文件。
Struts2面试题1、struts2工作流程Struts 2框架本身大致可以分为3个部分:核心控制器FilterDispatcher、业务控制器Action和用户实现的企业业务逻辑组件。
核心控制器FilterDispatcher是Struts 2框架的基础,包含了框架内部的控制流程和处理机制。
业务控制器Action和业务逻辑组件是需要用户来自己实现的。
用户在开发Action和业务逻辑组件的同时,还需要编写相关的配置文件,供核心控制器FilterDispatcher来使用。
Struts 2的工作流程相对于Struts 1要简单,与WebWork框架基本相同,所以说Struts 2是WebWork的升级版本。
基本简要流程如下:1 、客户端初始化一个指向Servlet容器的请求;2、这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin)3 、接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action4、如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy5、ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类6、ActionProxy创建一个ActionInvocation的实例。
7、ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。
8、一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。
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.Struts 2框架由__webWork______和___xWork_框架发展而来。
XWork是一个标准的Command模式实现,并且完全从web层脱离出来。
Xwork提供了很多核心功能:前端拦截机(interceptor),运行时表单属性验证,类型转换,强大的表达式语言(OGNL – the Object Graph Navigation Language),IoC(Inversion of Control倒置控制)容器等。
其目的是:创建一个泛化的、可重用且可扩展的命令模式框架,而不是一个特定在某个领域使用的框架。
其特点是:1、基于一个简单的接口就可以进行灵活且可自定义的配置;2、核心命令模式框架可以通过定制和扩展拦截器来适应任何请求/响应环境;3、整个框架通过类型转换和使用OGNL的action属性验证来构建;4、包含一个基于运行时Attribute和验证拦截器的强大的验证框架。
Xwork和WebWork的关系WebWork2 被构建在XWork之上,以XWork为基础。
通过使用XWork的命令模式框架和拦截器框架,提供了一个支持Web功能、能快速构建Web应用的命令模式框架。
xwork和Webwork的交互图2.Struts 2以__过滤器__为核心,采用__拦截器__的机制来处理用户的请求。
3.构建Struts 2应用的最基础的几个类库是_struts2-core__、_commons-logging_、_xwork-core_、__freamarker___以及_ognl_。
4.Struts 2中的控制器类是一个普通的_POJO_。
5.如果要在JSP页面中使用Struts 2提供的标签库,首先必须在页面中使用taglib编译指令导入标签库,其中taglib编译指令为___________。
6.在Struts 2表单标签库中,表单标签为___________。
7.ActionSupport类实现了___________接口和___________等接口。
8.通过控制器类中的___________方法来输出校验错误信息。
9. Struts 2以__________为核心控制器,它的初始化方法为__________。
10.Hibernate配置数据库连接的四种属性名是、、、。
11. 在Hibernate XML影射文件中描述主键生成机制,其属性描述了主键的生成策略,至少写出三种策略名、、。
12.基于Hibernate用标注(annotations)描述映射关系,映射实体类中表示主键的属性的标注是___________ ;映射实体类中普通属性的标注是___________;实体属性对应的列用标注___________。
13.Hibernate的会话接口中声明了持久化的操作,删除一个实体的方法是___________,合并一个实体的方法是___________,获得事务处理接口的方法是___________。
14. Hibernate的会话接口同时又是一个工厂类型:创建一个HQL查询接口的方法是___________,创建基于公式(标准)接口的方法是___________。
15. 对象关系映射(ORM)的基本原则是:类型(class)映射___________,属性(property)映射___________,类型的实例或对象(instance | object)映射___________。
16. Hibernate应用缺省的XML格式的配置文件名是___________, 放置在___________下;配置数据库方言的属性名是___________。
17. 在Hibernate中级联操作的属性值至少写出三个___________ 、___________、___________。
18 基于Hibernate用标注(annotations)描述映射关系,实体类型用标注___________ ;实体对应的表用标注___________。
19 Hibernate的会话接口是___________,它由接口___________创建;Hibernate处理事务的接口是___________;封装HQL的接口是___________ 。
20 EJB有三种类型:___________、___________、___________。
21 为配置Jboss作为EJB的运行环境,需要设置___换进变量。
22 Jboss作为EJB的运行环境,EJB应该部署在_____目录23 无状态的会话Bean的生命周期只有两个阶段____和_____24 在EJB调用机制中,存根(stub)是在____端产生的25 禁用默认拦截器的注释是_______26 注入资源的注释是_______27 如果在某个特点时间执行某段程序,应使用EJB提供的_______28 如果实体Bean需要返回客户端,必须实现__________接口29 如果不想让实体Bean的某些属性映射到表的字段,用_____注释30 在JPQA查询中,排除相同的对象用___二、选择:1) 在三层结构中,数据访问层承担的责任是(B)〔选一项〕a) 定义实体类b) 数据的增删改查操作c) 业务逻辑的描述d) 页面展示和控制转发2) 下面关于数据持久化概念的描述,错误的是(D〔选择一项〕a) 保存在内存中数据的状态是瞬时状态b) 持久状态的数据在关机后数据依然存在c) 数据可以由持久状态转换为瞬时状态d) 将数据转换为持久状态的机制称为数据持久化状态:瞬时,持久,脱管3) 下面关于Hibernate的说法,错误的是(C)〔选择一项〕a) Hibernate是一个“对象-关系映射”的实现b) Hibernate是一种数据持久化技术c) Hibernate是JDBC的替代技术d) 使用Hibernate可以简化持久化层的编码4) Hibernate配置文件中,不包含下面的(AB)〔选择二项〕a) “对象-关系映射”信息b) 实体间关联的配置c) show_sql等参数的配置d) 数据库连接信息5) 在Hibernate关系映射配置中,inverse属性的含义是(B)。
〔选择一项〕a) 定义在<one-to-many>节点上,声明要负责关联的维护b) 声明在<set>节点上,声明要对方负责关联的维护c) 定义在<one-to-many>节点上,声明对方要负责关联的维护d) 声明在<set>节点上,声明要负责关联的维护6) 在使用了Hibernate的系统中,要想在删除某个客户数据的同时删除该客户对应的所有订单数据,下面方法可行的是(B。
〔选择一项〕a) 配置客户和订单关联的cascade属性为save-updateb) 配置客户和订单关联的cascade属性为allc) 设置多对一关联的inverse属性为trued) 设置多对一关联的inverse属性为false7) 下面一对多关联的配置中,存在哪些错误(BD)。
<set name="orders" inverse="false" cascade="true"><one-to-many class="com.x.entity.Order"column="customer_id" /></set>a) inverse属性不可以设置为falseb) cascade属性不可设置为truec) class="com.x.entity.Order"应为type="com.x.entity.Order"d) column属性不可再<one-to-many>节点内设置8) 执行下面的hql查询,关于返回值的说法,正确的是(B)。
select ername,eridfrom er uwhere u is not nulla) 语法错误,不能执行b) 返回一个类型为List的实例c) 返回一个数组d) 当返回结果只有一条时,返回一个数组9) 下面创建Criteria对象的语句中正确的是(D)。
a) Criteria c = query.createCriteria();b) Criteria c = query.addCriteria();c) Criteria c = session.createCriteria();d) Criteria c = session.createCriteria(User.class);10) 一般情况下,关系数据模型与对象模型之间有哪些匹配关系(ACD多选)a) 表对应类b) 记录对应对象c) 表的字段对应类的属性d) 表之间的参考关系对应类之间的依赖关系11) 以下关于SessionFactory的说法哪些正确?BCa) 对于每个数据库事务,应该创建一个SessionFactory对象b) 一个SessionFactory对象对应一个数据库存储源。
c) SessionFactory是重量级的对象,不应该随意创建。
如果系统中只有一个数据库存储源,只需要创建一个。
d) SessionFactory的load()方法用于加载持久化对象12) Customer类中有一个Set类型的orders属性,用来存放Order订单对象,在Customer.hbm.xml文件中,用哪个元素映射orders属性?ABa) <set>b) <one-to-many>c) <many-to-one>d) <property>13) <set>元素有一个cascade属性,如果希望Hibernate级联保存集合中的对象,casecade 属性应该取什么值?(D)〔选择一项〕a) noneb) savec) deleted) save-update14) 以下哪些属于Session的方法?ABDa) load()b) save()c) open()d) saveOrUpdate()15) 创建序列时,若未指定Cycle选项,则当当前值大于MaxValue时将()〔选择一项〕a) 从MinValue重新开始循环b) 重复使用MaxValue 值c) 执行出错d) 使用随机值16) 以下程序的打印结果是什么?Ctx = session.beginTransaction();Customer c1=(Customer)session.load(Customer.class,new Long(1));Customer c2=(Customer)session.load(Customer.class,new Long(1));System.out.println(c1==c2);mit();session.close();a) 运行出错,抛出异常b) 打印falsec) 打印trued) 编译出错17) 以下程序代码对Customer的name属性修改了两次:Btx = session.beginTransaction();Customer customer=(Customer)session.load(Customer.class,new Long(1));customer.setName(\"Jack\");customer.setName(\"Mike\");mit();执行以上程序,Hibernate需要向数据库提交几条update语句?(单选)a) 0b) 1c) 2d) 318) 在持久化层,对象分为哪些状态?(ACD多选)a) 瞬时(Transient)b) 新建(New)c) 脱管(Detached)d) 持久(Persistent)19) 对于以下程序,Customer对象在第几行变为持久化状态?(B单选)Customer customer=new Customer();customer.setName(\"Tom\");Session session1=sessionFactory.openSession();Transaction tx1 = session1.beginTransaction(); //line1session1.save(customer); //line2mit(); //line3session1.close(); //line4a) line1b) line2c) line3d) line420) 对于以下程序,Customer对象在第几行变为游离状态?(D单选)Customer customer=new Customer();customer.setName(\"Tom\");Session session1=sessionFactory.openSession();Transaction tx1 = session1.beginTransaction(); //line1session1.save(customer); //line2mit(); //line3session1.close(); //line4a) line1b) line2c) line3d) line421) 以下哪一种检索策略利用了外连结查询?(C单选)a) 立即检索b) 延迟检索c) 迫切左外连结检索d) 迫切右外连结检索22) 假设对Customer类的orders集合采用延迟检索策略,编译或运行以下程序,会出现什么情况(D单选)Session session=sessionFactory.openSession();tx = session.beginTransaction();Customer customer=(Customer)session.get(Customer.class,new Long(1));mit();session.close();Iterator orderIterator=customer.getOrders().iterator();a) 编译出错b) 编译通过,正常运行,不显示任何信息c) 编译通过,正常运行,并显示出结果d) 编译通过,但运行时抛出异常23) POJO是Aa) Plain Old Java Objectb) Programming Object Java Objectc) Page Old Java Objectd) Plain Object Java Old24) POJO的作用是ACa) 普通的Java对象映射数据库字段b) 数据访问c) 对象的赋值d) 保存客户端对象25) 实现equals和hashCode最显而易见的作用是Aa) 比较两个对象标识符的值b) 比较数据库的两条数据c) 比较两个组建是否部署在同一个应用服务器上d) 对象与字段的映射26) 持久化状态前进行合法性检查,需要实现的接口是Ba) ActionListenerb) Lifecyclec) HttpServletRequestd) 持久化状态合法检查不需要实现接口27) 在源代码中嵌入映射信息需要Aa) XDocletb) EJBc) Hibernated) Spring28) 所有的Hibernate,除了了都支持空(null)语义。