hibernate工作原理:
1.配置好hibernate的配置文件和与类对应的配置文件后,启动服务器
2.服务器通过实例化Configeration对象,读取hibernate.cfg.xml文件的配置内容,并根据相关的需求建好表或者和表建立好映射关系
3.通过实例化的Configeration对象就可以建立sessionFactory实例,进一步,通过sessionFactory实例可以创建session对象
4.得到session之后,便可以对数据库进行增删改查操作了,除了比较复杂的全文搜索外,简单的操作都可以通过hibernate封装好的session内置方法来实现
5.此外,还可以通过事物管理,表的关联来实现较为复杂的数据库设计
hibernate优点:
1,hibernate是一款orm(对象关系映射)轻量级框架,使用时只需操纵对象,使开发更加面向对象化,透明化。
2,简洁的HQL语句,减少了jdbc和sql操作数据库的代码量,解决持久化操作,提高程序员开发效率。
3,移植性好(只要使用Hibernate标准开发,更换数据库时,只需要配置相应的配置文件就可以了,不需要做其它任务的操作)
4,无入侵性
hibernate缺点:
1、效率比JDBC略差;
2、不适合批量操作。
struts2流程:
客户端请求----经三个过滤器(ActionContextCleanUp,其他过滤器,到FilterDispatcher核心控制器)
FilterDispatcher询问ActionMapper是否需要调用Action来处理,如果ActionMapper决定调用,FilterDispatcher就把对请求的处理交给了ActionProxy
ActionProxy通过Configuration Manager 询问框架的配置文件,找到需要调用的Action类
ActionProxy创建一个ActionInvocation实例,同时ActionInvocation通过代理模式调用Action,但在调用之前ActionInvocation会根据配置加载Action相关的拦截器,
每执行完一个拦截器,会调用invocation的invoke方法,把请求传给下个Interceptor,所有的Interceptor执行完以后,会执行Action
Action执行根据后,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果
这个返回结果可能是一个 需要表示为JSP或FreeMarker的模板,或者是另一个Action链
如果是前者,表示的过程中可以使用struts2的标签,生成动态网页后返回给用户
如果是后者,则再把上述过程执行一遍
struts2优点:
1,实现了MVC模式,层次结构清晰,使程序员只需关注业务逻辑的实现;
2,丰富的标签库,大大提高了开发的效率;
3,Struts2提供丰富的拦截器实现,使面向切面编程的思想在Strut2中也有了很好的体现。
4,通过配置文件,就可以掌握整个系统各个部分之间的关系;
5,异常处理机制,只需在配置文件中配置异常的映射,即可对异常做相应的处理;
6, Struts2的可扩展性高。
struts2缺点:
1,Struts2中Action中取得从jsp中传过来的参数时还是有点麻烦。
2,安全性有待提高。
3,校验还是感觉比较繁琐,感觉太烦乱,太细化了。
Spring流程:
1.首先,对于一个web应用,其部署在web容器中,web容器提供其一个全局的上下文环境,这个上下文就是ServletContext,其为后面的spring IoC容器提供宿主环境;
2.其次,在web.xml中会提供有contextLoaderListener
3.再次,contextLoaderListener监听器初始化完毕后,开始初始化web.xml中配置的Servlet,这里是DispatcherServlet,这个servlet实际上是一个标准的前端控制器,用以转发、匹配、处理每个servlet请 求
spring优点:
1)无入侵性,代码安全(在业务逻辑代码中感觉不到Spring框架的存在);
2)各个组件之间的耦合极为松散;
3)无需程序员自己实现singleton模式;
4)通过AOP,可以实现事务管理和日志管理;
5)整合其他的框架,如:struts2框架和hibernate框架;
6)Spring DI(依赖注入)机制降低了业务对象替换的复杂性。
spring缺点:
1.jsp中要写很多代码、控制器过于灵活,缺少一个公用控制器
2.Spring不支持分布式,这也是EJB(sun的JavaEE服务器端组件模型)仍然在用的原因之一。
Mybatis原理详解:
MyBatis应用程序根据XML配置文件创建SqlSessionFactory,SqlSessionFactory在根据配置,配置来源于两个地方,一处是配置文件,一处是Java代码的注解,获取一个SqlSession。SqlSession包含了执行sql所需要的所有方法,可以通过SqlSession实例直接运行映射的sql语句,完成对数据的增删改查和事务提交等,用完之后关闭SqlSession。
Mybatis优点:
1. 易于上手和掌握。
2. sql写在xml里,便于统一管理和优化。
3. 解除sql与程序代码的耦合。
4. 提供映射标签,支持对象与数据库的orm字段关系映射
5. 提供对象关系映射标签,支持对象关系组建维护
6. 提供xml标签,支持编写动态sql。
Mybatis缺点:
1、编写SQL语句时工作量很大,尤其是字段多、关联表多时,更是如此。
2、SQL语句依赖于数据库,导致数据库移植性差,不能更换数据库。
3、框架还是比较简陋,功能尚有缺失,虽然简化了数据绑定代码,但是整个底层数据库查询实际还是要自己写的,工作量也比较大,而且不太容易适应快速数据库修改。
4、二级缓存机制不佳
SpringMVC工作流程:
1.spring mvc将所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责对请求 进行真正的处理工作。
2.DispatcherServlet查询一个或多个HandlerMapping,找到处理请求的Controller.
3.DispatcherServlet请请求提交到目标Controller
4.Controller进行业务逻辑处理后,会返回一个ModelAndView
5.Dispathcher查询一个或多个ViewResolver视图解析器,找到ModelAndView对象指定的视图对象
6.视图对象负责渲染返回给客户端。
SpringMVC的优点:
1,与Spring框架天生整合,无框架兼容问题
2,与Struts2相比安全性高
3,配置量小、开发效率高
Springmvc缺点:
1,不利于维护
2,配置文件相对繁琐
|
|