1、Struts2工作原理
a、客户端发送请求到服务端发出请求,在web.xml配置了Strust2的主过滤器
StrutsPreparedAndExcuteFilter,和对应的过滤资源路径
b、经过几个过滤器会到FilterDispatcher过滤器。经过ActionProxy代理Action,根据Struts配置文件信息,和请求的URI决定调用哪个Action的哪个方法。
c、Action中的方法执行完成后会返回一个逻辑视图,ActionInvocation类负责将逻辑视图映射到具体的物理视图中,然后显示结果
2、Hibernate的工作原理及优点
A、原理
1)创建一个Configuration配置对象,调用它的Configure()方法获取Hibernate的主配置文件,加载数据库连接和方言信息,已经Hibernate的配置的映射文件。
2)通过Configuration对象的buildSessionFactory()方法创建一个SessionFactory
3)SessionFactory对象可以OpenSession或者getCurrentSession()方法获取一个Session对象
4)用Transaction tx=Session.beginTransaction()方法开启事务
5)Session.save()\delete()\update()\get()方法实现增删改查 或者创建Criteria对象或者Query对象执行更为复杂的查询
6)提交事务,tx.commit()
7)出现异常时可以回滚事务tx.rollback()
8) 关闭Session对象
B、优点
1)对JDBC进行封装,简化了数据访问和操作的重复性代码。
2)Hibernate是一个优秀的持久层框架,完全实现ORM对象关系映射,很好的实现对象和关系数据的转换。
3)H关系ernate提供访问各种数据库和数据源的方言,能支持多种数据,解决了各种数据库产品的SQL语句差异在更换数据库是的问题。
3、Hibernate的缓存有哪些?简单介绍下
Hibernate的缓存有两个一级缓存和二级缓存
1)一级缓存:session级的缓存也叫事务级的缓存,只缓存实体,生命周期和session一致。不能对其进行管理。
2)二级缓存:sessionFactory缓存,也叫进程级的缓存,使用第3方插件实现的,也只缓存实体,生命周期和sessionFactory一致,可以进行管理。首先配置第3放插件 ,我们用的是EHCache,在hibernate.cfg.xml文件中加入<property name="hibernate.cache.user_second_level_cache">true</property>在映射中也要显示的 调用,<cache usage="read-only"/>二级缓存之查询缓存:对普通属性进行缓存。如果关联的表发生了修改,那么查询缓存的生命周期也结束了。在程序中必须手动启 用查询缓存:query.setCacheable(true);
4、如何优化Hibernate?
1.使用双向一对多关联,不使用单向一对多
2.灵活使用单向一对多关联
3.不用一对一,用多对一取代
4.配置对象缓存,不使用集合缓存
5.一对多集合使用Bag,多对多集合使用Set
6. 继承类使用显式多态
7. 表字段要少,表关联不要怕多,有二级缓存撑腰
5.Hibernate有哪几种查询数据的方式
(1)导航对象图查询
(2)OID查询
(3)HQL
(4)QBC
(5)本地SQL
6、Session.get(Class,id)和Session.load(Class,id)的区别
1:如果数据库中,没有userId的对象。如果通过get方法加载,则返回的是一个null;
如果通过load加载,则返回一个代理对象,如果后面代码如果调用user对象的某个属性(比如user.getPassword())会抛出异常: rg.hibernate.ObjectNotFoundException;
2:load支持延迟加载,get不支持延迟加载。
7、Spring的IOC、DI、AOP分别指什么,原理、作用是什么?为什么使用Spring框架?
1、IOC: 控制反转<Inversion of control> 应用工厂设计模式和反射原理实现
将对象的初始化装配和调用的主动权交个容器来处理,通过配置文件通知容器去装配和调用哪一个bean对象,这样可以降低各个层之间的耦合度。
提高了程序的代码重用性和可维护性。
实现方法:<1>依赖查找(Dependency Lookup):容器提供回调接口和上下文环境给组件。EJB和Apache Avalon都使用这种方式。
<2>依赖注入(Dependency Injection):组件不做定位查询,只提供普通的Java方法让容器去决定依赖关系。后者是时下最流行的IoC类型
2、DI:依赖注入Dependency Injection
在运行期,由外部容器动态地将依赖对象注入到组件中
3、AOP:面向切面编程 Aspect Oriented Programming 实现原理是动态代理设计
可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序统一添加功能的一种技术。
主要的功能是:日志记录,性能统计,安全控制,事务处理,异常处理等
8、Spring 的有点:
1、降低组件之间的耦合度,实现软件各层之间的解耦。
2、可以使用容器提供的众多服务,如:事务管理服务、消息服务等等。当我们使用容器管理事务时,开发人员就不再需要手工控制事务.也不需处理复杂的事务传播、
3、容器提供单例模式支持,开发人员不再需要自己编写实现代码。
4、容器提供了AOP技术,利用它很容易实现如权限拦截、运行期监控等功能
5、容器提供的众多辅作类,使用这些类能够加快应用的开发,如: JdbcTemplate、 HibernateTemplate。
6、Spring对于主流的应用框架提供了集成支持,如:集成Hibernate、JPA、Struts等,这样更便于应用的开发。
分享到:
相关推荐
ssh2 架构的理解,也是现在主流的框架.
自己写的个人理解,面试的时候考官问你对这个框架怎么理解 可以看看
SSH框架的理解及其应用实践
基于oracle dept表的一个简单框架,分层详细,容易理解。初学者可以借鉴一下!
全是自己做的,不知道怎么样,希望大家给点意见
自己写的最新的ssh实例,我是新手,请多指教
经典的开发框架SSH的基本介绍,以及MVC模式的理解。
详细介绍ssh的相关知识,能快速的理解ssh的原理,特别适合新手。
通过使用SSH,你可以把所有传输的数据进行加密,这样网络传输中间的攻击方式就不可实现了, 而且也能够防止DNS和IP欺骗?另外,传输的数据是经过压缩的,可以加快传输的速度。 SSH有很多功能,它既可以代替telnet,又可以为...
这是我个人经过认真的研究总结出来的三个框架的作用
该文档详细讲解SSH框架工作原理,让你更好理解SSH整合的奥妙!
这是一个简单的ssh框架实现的登录程序,旨在帮助初学者理解struts,spring,hibernate中间的关系,让初学者理解层的分布。
SSH从头到尾都是围绕着一个中心建立的:面向对象。 Hibernate是作为一种对象持久化手段而存在的。所谓的O/R MAPPING其实就是持久化。因为对象与关系只不过是一个个体与集合的关系,本质上并不存在冲突。不需要...
使用struts2标签进行分页显示和回显,使得项目结构相当清晰,极易理解和再次利用。 注意:请点击报警管理进行操作,其它链接功能雷同,故而有形无实。 本资源所需的jar包请到“ssh框架搭建实例源码2”和“ssh框架...
ssh框架简单例子带有解释,此例子是使用Struts2+Spring+hibernate写成,例子非常简单,但是结构确非常合理的专业,企业所使用的架构也不过如此。
ssh框架基本构建,对ssh的构建细节很详细的写出,对于新手帮助很大,帮助更好的理解ssh
使用ssh开发的网上商城实例完整源码,可帮助你理解学习ssh框架,迅速掌握开发步骤,程序中使用的目前流行的ajax等技术。
JSPssh研究生毕业环节管理系统 是一套完善的WEB设计系统,对理解JSP java 编程开发语言有帮助,系统采用ssh框架 MVC模式进行开发,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。本系统运用MVC设计模式,...