一。请简述下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是控制反转。将自己模块交给容器去控制,而不是模块自己本身去处理。