您的位置:首页 > 编程语言 > Java开发

Java Web面试笔试整理之二(Hibernate/Spring/Struts)

2012-09-22 02:18 323 查看
一。请简述下Hibernate、Spring、Struts

Hibernate:是非常优秀成熟的O/P mapping 框架。它提供了强大的对象和关系数据库的映射以及查询功能。它把对表的直接操作转化为对持久类的属性属性和方法的操作。

Spring:是一个多层的J2EE应用框架,它的核心是提出一种新的机制管理业务对象以及之间的依赖关系。它是一个轻量级的框架。Spring提供了对持久层的整合,对JDBC的使用加以封装简化,提供事务功能,对ORM框架进行封装,并提供简单的借口。

Struts:是采用JAVA Servlet/JavaServlet Pages技术,开发WEB应用程序的开发源码框架,使用Struts可以开发出基于MVC的程序。

二。简述下Hibernate、Spring、Struts的优缺点?

Hibernate优点:

1.使用java反射实现透明性。

2.轻量级的框架,性能好,映射的灵活性出色。

3.支持各种数据库以及各种关联关系。

Hibernate缺点:

限制了使用的对象模型,一个持久类对象只能映射一张表。

Spring的优点:

1.可以有效的组织中间层对象。

2.使用Spring构建的应用程序易于单元测试。

3.消除在许多工程中使用的单态模式。

4.通过一种在不同的项目和程序之间的一致方法处理配置文件。

Spring的缺点:

需要配置过多的配置文件。

Struts的优点:

1.开源,可以让使用者深入了解内部运行机制。

2.Taglib具有丰富的标签,提高开发效率。

3.页面导航使系统脉络更加的清晰,通过一个配置文件即可把握整个系统各个部分之间的关系。

Struts的缺点:

1.大量使用标签,对初学者来说比较困难。

2.系统分层,增加系统的复杂性。

3.ActionFrom使用不便,不可以进行单元测试。

三。Hibernate、Spring、Struts的流程。

Hibernate:

1.读取配置文件,创建Configeration对象。

2.创建SessionFactory实例。

3.调用SessionFactory方法创建Session实例。

4.通过Session接口提供的各种方法操作数据库。(创建事务Transati、持久化操作、提交事务等)。

5.关闭Session,关闭SessionFactory

Spring:

1.读取并分析Spring配置文件。

2.通过JAVA反射机制,提供工厂类,创建并集成上述配置文件中定义的对象。

3.将创建的对象返回给开发者应用。

Struts:

1.ActionServlet接受客户端请求。

2.将请求参数封装到ActionFrom

3.查找与用户请求相对应的ActionMapping实例。

4.ActionServlet根据ActionMapping实例包含的映射信息将请求发送到相对应的Action对象。

5.调用Action的excute()方法,返回一个ActionForward对象。

6.ActionForward指向JSP组件,生成动态网页返回给客户。

四。Hibernate、Spring、Struts在J2EE三层体系中的应用?

Hibernate位于持久层,提供对象关系映射,操作数据库。

Spring主要用来为应用程序生成实例。

Struts主要用来控制业务逻辑流程。

五。Hibernate的工作原理以及为什么要用?

原理:Hibernate对JDBC进行封装,对Java类和关系数据库进行mapping,实现了对关系数据库的面相对象的操作。改变了传统的JDBC+SQL操作数据的方式。使开发更加的方便。

一般为以下几个步骤:

1.读取并解析配置文件。

2.创建SessionFactory

3.打开Session

4.创建事务Transation

5.持久化操作

6.提交事务

7.关闭Session

8.关闭SessionFactory

为什么要用Hibernate?

1.对JDBC进行了封装,大大简化了访问层的复杂的重复性代码。

2.Hibernate是基于JDBC的持久化框架,简化了DAO层的编码。

3.Hibernate性能好,是一个轻量级的框架,映射灵活支持多种数据库。

六。什么是Hibernate的延迟加载?

延迟加载时为了避免不必要的性能开销而提出来的,就是在真正需要数据的时候,才执行数据加载操作。对实体对象和和集合的延迟加载。

七。Hibernate中类之间的关联关系有哪几种?

one-to-one,one-to-many,many-to-one,many-to-many.

八。Hibernate的缓存机制?

Hibernate支持两个级别的缓存,默认是一级缓存。每个Session内部都自带一个一级缓存。当次Session关闭后,自带的缓存也消除。二级缓存独立于Session,默认不开启。

九。Hibernate的查询方式?

本地SQL查询、Hql、Criteria(条件查询)

十。如何优化Hibernate?

1.使用双向一对多关联,不适用单项一对多关联。

2.不用一对一,用多对一取代。

3.配置对象缓存,不适用集合缓存。

十一。为什么要使用Struts?

JSP、Servlet、JavaBean技术的出现为我们构建强大的企业应用提供了可能,但是这些技术构建的系统非常的繁乱。可以专心在业务上的实现,同时也便于维护。

十二。Hibernate中get()和load()的区别?

如果没有匹配的数据库信息,load()方法可能抛出无法恢复的异常。get()方法加载对象时,如果对象不存在返回一个null。

十三。Struts中的Action是不是安全的?如果不是,有什么方式可以保证Action的安全?

线程安全就是你可以再多线程环境下使用,而不需要对它进行特殊的处理。Action都是继承于Servlet的,由于Servlet就是线程不安全的,所以不要在Action中定义类变量和实例变量,否则其它线程改变了此值,此线程仍在使用。

十四。Struts中几个关键对象的作用。

Action:业务,用于控制业务流程。

ActionServlet:核心技术,用于将请求发送到相应的Action类。

Form:就是BEAN,用来传递参数的值。

十五。Spring中AOP和IOC的概念以及在Spring中如何使用?

AOP是面相切面变成。更大程度上降低程序调用者和被调用者之间的耦合性。

IOC是控制反转。将自己模块交给容器去控制,而不是模块自己本身去处理。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: