2024年5月1日发(作者:)

一、名词解释(共5小题每题3分,共15分)

1、MVC :Model、View和Controller,是一个设计模式,它强制性地使应用程序的输入、

处理和输出分开,三个部分以最小的耦合协同工作,以增加程序的可扩展性和可维护性;

2、OGNL:Object Graphic Navigation Language(对象图导航语言),是一个开源项目,是一

种功能强大的EL(表达式语言),可通过简单的表达式来访问Java对象中的属性;

3、持久化:即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘),是将

程序数据在持久状态和瞬时状态间转换的机制;

4、ORM:对象关系映射,是用于将对象与对象之间的关系对应到数据库表与表之间关系的

一种模式;

5、通知(Advice):定义了切面中的实现类型是指在定义好的切入点处所有执行的程序代码;

6、事务:是工作中的基本逻辑单位,可以用于确保数据库能够被正确修改,避免数据只修

改了一部分而导致数据不完整,或者在修改时受到用户干扰;

7、POJO类:POJO(Plain Old Java Objects)简单的Java对象,实际就是普通JavaBeans,是

为了避免和EJB混淆所创造的简称,它通指没有使用Entity Beans的普通java对象,可以把

POJO作为支持业务逻辑的协助类。

8、AOP:面向切面编程,可以通过预编译方式和运行期动态代理实现在不修改源代码的情

况下给程序动态统一添加功能的一种技术;

9、IoC:Inversion of Control(控制反转),是一个重要的面向对象编程的法则来削减计算机

程序的耦合问题,IoC的基本概念是不创建对象,但是描述创建它们的方式,在代码中不直

接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务。容器负责将这些联

系在一起;

10、HQL:Hibernate Query Language的缩写,HQL的语法很像SQL,但HQL是一种面向对象

的查询语言,操作的对象是类、实例、属性等。

填空(共10空,每空2分,共20分)

1、Spring从容器中获取bean对象可以分别通过(BeanFactory)接口和(ApplicationContext)

接口来实现。

2、Struts2、Hibernate缺省的核心配置文件名分别为()和()。

3、OGNL上下文有一个bar对象,它不是根对象,bar有getvalue属性,则利用OGNL表达

式求bar对象的getvalue属性值为(#)。

4、使用Hibernate的七个步骤是:创建Configuration、创建SessionFactory、(开启一次会话)、

(开启一个事务)、持久化操作、(提交事务)和(释放资源)。

5、在Hibernate项目中,如实体类为User,则对应的配置文件名为()。

6、Struts2的action类定义时传值方式可以采取(字段传值)、(模型传值)

7、持久化对象的生命周期中对象的三种状态(瞬时态)(持久态)(脱管态)

8、hibernate事务并发处理可以通过加锁的机制实现(悲观锁)(乐观锁);

9、Struts2应用拦截器解决重复提交问题时页面中应使用的标签是(<>)、Struts2实

现国际化的标签是(<>)。

三、问答题(共5小题,每题7分,共35分)

1、Struts2 工作流程是什么?

用户发送一个请求后,也就是一个*.action,中配置的FilterDispatcher(Struts2框架

的核心控制器)就会过滤该请求。如果请求是以.action结尾,该请求就会被转入Struts2框

架处理,Struts2框架接收到*.action请求后,将根据*.action请求前面的*来决定调用哪个业

务。

2、开发Hibernate项目步骤是什么?

(1)建立项目;

(2)创建POJO类及其映射文件;

(3)创建Hibernate核心配置文件;

(4)编写代码,实现系统的详细功能和业务逻辑接口。

3、关联关系映射有哪几种?含义是什么?

一对一关联:有两种实现方式:共享主键方式和唯一外键方式,是many-to-one的一种情况,

不同的是关联中的外键字段具有唯一性约束;

多对一单向关联:

一对多双向关联:

多对多关联:

4、Hibernate相关接口作用是什么?

Configuration:负责管理Hibernate的配置信息;

SessionFactory:负责创建Session实例,可以通过Configurtion实例构建SessionFactory;

Session:是Hibrenate持久化操作的基础,提供了众多持久化方法,通过这些方法,透明地

完成对象的增、删、改、查等操作;

Transaction:是Hibernate进行事物操作的接口,是对实际事务实现的一个抽象;事务对象

通过Session创建;

Query:Hibernate3.x中取代find()方法的接口,用于执行HQl语句,Query和HQL是分不

开的。

5、SQL与HQL区别?

SQL操作的对象是数据表和列等数据对象,HQL操作的对象是类、实例、属性等。

6、Spring提供的3种通知(Advice)类型和含义?

前通知:指在连接点之前,先执行通知中的代码;

后通知:指在连接点执行后,再执行通知中的代码。后增强一般分为连接点正常返回增强及

连接点异常返回增强等类型;

环绕通知:是一种功能强大的增强,可以自由地改变程序的流程、连接点返回值等。除了可

以自由添加横切功能外还需要负责主动调用连接点。

7、怎样通过Hibernate实现分页的功能?

Hibernate的Query实例提供了两个有用的方法:setFirstResult(int firstResult)和setMaxResult

(int maxResult),setFirstResult方法用于指定从哪一个对象开始查询,默认为第一个对象,

setMaxResult方法用于指定一次最多查询的对象的数目,默认为所有对象。

8、struts2、spring、hibernate整合开发的过程。

(1)项目创建;

(2)添加项目开发所需要的jar包;

(3)实现Hibernate持久层;

(4)编写DAO接口及实现类;

(5)编写业务逻辑接口及实现类;

(6)系统详细功能实现。

9、spring中实现注入依赖的方式是什么,比较不同的方式?

set注入和构造注入;使用构造注入可以在构建对象的同时一并完成依赖关系的建立,所以,

如果建立的对象的关系很多,使用构造注入就会在构造方法上留下很多的参数,使非常不易

阅读的,这时建议使用set注入。然而用set注入由于提供了setXx()方法,所以不能保证

相关数据在执行时不被更改设定,因此,如果想让一些数据变为只读或私有,使用构造注入

会是很好的选择。

10、Hibernate Session接口的 get()/load()方法有什么区别?

(1)当数据库表中id值为1时,使用get()方法返回null,使用load()方法返回异常;

(2)load()查询会先到缓存中去查,如果没有则返回一个代理对象,等到后面使用这个

代理对象的时候,才会到数据库中查找相应的信息。若还是没有就抛出异常。get()查询

则先到缓存中去查,如果没有就直接到数据库中查询,还没有的话就返回null;

(3)load()查询支持延迟加载,而get()查询不支持;

总的来说,使用load()方法需要确保数据库中存在相应的值,否则就抛出异常,而get()

查询则是试探性的获取,如果没有就返回null。

程序填空题(共20分)

1、完成下列代码的hibernate双向多对一映射,数据库表名与POJO类名相同、POJO类位于

包下。

省略了getter/setter

省略了getter/setter

"/">

"/">