ssh学习总结

ssh学习总结

20xx-03-21 17:37

1. 典型的J2EE三层结构,分为表现层、中间层(业务逻辑层)和数据服务层。层体系将业务规则、数据访问及合法性校验等工作放在中间层处理。客户端不直接与数据库交互,而是通过组件与中间层建立连接,再由中间层与数据库交互。

2. 数据服务层:orcale;其数据服务层实现数据的存储。

3. 中间层(业务逻辑层Spring+Hibernate):

中间层采用的是流行的Spring+Hibernate,为了将控制层与业务逻辑层分离,又细分为以下几种。 Web层,就是MVC模式里面的“C”(controller),负责控制业务逻辑层与表现层的交互,调用业务逻辑层,并将业务数据返回给表现层作组织表现,该系统的MVC框架采用Struts。

Service层(就是业务逻辑层),负责实现业务逻辑。业务逻辑层以DAO层为基础,通过对DAO组件的正面模式包装,完成系统所要求的业务逻辑。 由spring来负责!其目的就是通过编写接口配置applicationContext.xml实现ioc控制反转!控制反转就是让高层去调用底层,而不去关心我底层是怎么实现的(can or can not 而不是 how or why)。采用工场的模式也可以实现IOC,但需要编写大量的工场,每一个接口都需要对应一个工场。所以相当费时费力。 struts:

先来说说以前的开发的方式把!我shi根据STRUTS开发了自己的MVC框架,其实就是STRUTS的简化版本。主要功能就是页面的按钮的方法或者说事件方法和后台METHOD绑定,根据用户的业务请求触发的一系列操作。

大概的整个操作流就是:页面方法->SERVLET逻辑控制器通过取得的页面

METHOD(也就是struts2的ACTION),对号入座,初始化对应的FORM,然后对提交数据进行封装->指定类的PUBLIC方法中执行一系列逻辑操作(解析FORM,封装业务DTO)->业务DAO中进行业务处理,然后持久化到数据库中。简化视图就是:JSP->FILTER->SERVLET容器->FORM->LOGIC->SERVICE->DAO. 个人感觉结构清晰明了。不知道其他大虾如何看!!

以前有稍微了解过SSH但是没有太深入,因为感觉SSH实在太复杂了。把简单的问题复杂化了。除了配置还是配置,继承还是继承,说实在的。让初学者来学的话,门槛真的有点高了。不知道大家对于开发框架有什么看法呢?看了几天有点晕,但是的确这些框架够OO,学到了不少东西。

说说开发吧!系统已启动一堆的DEBUG信息,太能生了(是不是该计划生育了呢?)。不得不把自己的LOG4J的级别调成INFO来开发(反正只是测试的项目)。由于还没有深入的使用还没有发现SPRING真正带来了那些好处,真的有必要SPRING吗?只知道大家都说他是IOC和AOP,针对是业务上的管理。再说说HIBERNATE给我一个比较好的感觉就是对象的增删查改还不错。如果其他具体的业务感觉不怎么地。发现很多人都SQL还是自己去拼装,似乎不是HIBERNATE所说的什么面向对象的持久化之类的,个人感觉还不如使用IBATIS呢?

还有发现SSH很多拦截器==之类的过滤操作,这些会不会太影响性能了呢?反正目前还是费解中。

大家是否觉得这些框架是否该减减肥了呢?

hibernate:

hibernate 通过数据对象化,并按照业务逻辑配置合适的级联关系,已经不仅仅是能很方便的对单个对象进行数据库操作,同时可以方便的获取级联对象和实体对象的保存。而实体对象和数据库的映射又是另外一层约束(业务是可以在这里加上字长,是否为空的一些简单约束),同时hsql基于对象的思想,这是hibernate在oo上的出色的亮点。

同时hibernate 拥有数据缓存,在一次数据会话中(一个session的生命周期)存在一个一级缓存,可以让业务操作在会话中获取缓存中的数据,而在session结束的时候再对数据库进行批量处理,这样减少了对数据的操作压力。 二级缓存是在单机服务器中加入ehcached的cache,cache的生命周期长期存在,可提供给单机多个数据库会话共享二级缓存,这样就可以在跨session的范围内减少了数据库的访问,但用于事务和session的绑定,导致这块的代码需要很好的详细涉及,并且有比较好的并发思考能力。在缓存上面已经有强人将

hibernate 二级缓存的实现替换成可作为cache服务器的memcached,这样可以支持多台服务器共享二级数据缓存(这个场景比较适合针对查询,如果有事务会引入太多的复杂度,一般这样的情况共享缓存,在事务上还是会首先选择垂直分布的方式来分摊事务)。(在减少数据库操作方面最牛的是oracle的产品内存集群数据库)

但 hibernate 在做复杂的业务查询的时候,由于会将对象其他属性也获取出来,得道较多的不需要的数据,虽然后来的hibernate在这个方面做了优化,但还是推荐用native sql 来做,没有事务时避开缓存和多余数据 是效率的保证。

ibetis 使用起来十分简单,而且在sql上的配置具有更多的灵活性,并把sql区分模块集中,可以很大程度的分离关注点,(虽然hibernate 支持properties配置,但没有它灵活)

Spring的IOC控制反转 如果是说在配置参数上提供了方便不用编译,那就太片面了。它强大的是factoryBean的factory的创建,将自己手动创建的过程交给了 context来管理 factoryBean,通过依赖注入来初始化这些factoryBean,并由factoryBean来生产我们需要的对象。

至于Spring 的AOP,AOP 是一个思想,很多的东西都使用了这个思想,而Spring 是提供了一些实现(例如支持事务的AOP,例如提供AOP基础代码,之需要我们指定目标对象,拦截的前增强操作,后增强操作和切入点),并做了一些我们会常用的 aop Templete类,使用这些现成的类会很大程度的减少我们自己的代码量,和提高代码的安全性,减少问题的出现范围。而理解事务和处理事务生命事务,解决资源绑定的代码并不是一个很容易的事情,使用现有的代码无疑是不重复发明轮子而又只需要花费少些了解API代价的上上之选。

spring:

方到用时才明了。

Spring IOC:假设你现在有个逻辑模块用来计算权值,现在你需要换一下,但是以前那个还得保留,比如原来计算是+1现在要+10。如果用了IOC,那么你只需要在Spring配置文件里讲实现类改一下即可。(不过通常用来讲述IOC好像用的例子是:你要换数据库操作方式吗?从Hibernate换成iBatis)

Spring AOP:可对方法拦截,比如,某些用户有权限使用这个方法吗?用AOP拦截吧。(不过通常用来讲述AOP的好像用的例子是:你要记录日志总不能在每个文件里都写吧?)

Hibernate:理解面向对象思想,你就理解了Hibernate到底是干嘛的。至于很多人还是用的SQL查询那是他们不想用面向对象方法解决问题。

Struts、spring、Hibernate在各层的作用

1)struts 负责 web层.

ActionFormBean 接收网页中表单提交的数据,然后通过Action 进行处理,再Forward到对应的网页。 在struts-config.xml中定义<action-mapping>, ActionServlet会加载。

2)spring 负责业务层管理,即Service(或Manager).

1. service为action提供统计的调用接口,封装持久层的DAO,。

2.可以写一些自己的业务方法。

3.统一的javabean管理方法

4.声明式事务管理

5.集成Hiberante

3)Hiberante,负责持久化层,完成数据库的crud操作

hibernate 为持久层,提供 OR/Mapping。

它有一组 .hbm.xml文件和 POJO,是跟数据库中的表相对应的。然后定义DAO,这些是跟数据库打交道的类,它们会使用PO。

在struts+spring+hibernate的系统中,

对象的调用流程是:jsp-> Action-> Service ->DAO ->Hibernate。 数据的流向是 ActionFormBean接受用户的数据,Action 将数据从

ActionFromBean 中取出,封装成VO或PO, 再调用业务层的Bean类,完成各种业务处理后再forward。而业务层Bean收到这个PO对象之后,会调用DAO接口方法,进行持久化操作。

 

第二篇:SSH学习总结

1 Hibernate持久化操作

持久化就是把数据同步保存到数据库或某些存储设备中去。

使用Hibernate进行持久化操作主要需要以下步骤:

STEP 1:创建Configuration对象。在这一步中主要为了进行配置文件的装载操作,读取所有的配置文件并进行解析

STEP2: 创建SessionFactory对象。通过创建好的Configuration对象可以创建一个sessionFactory对象的实例,同时是生成Session对象实例的工厂,他在整个应用中应该是唯一的。

STEP3:创建Session对象。 Session对象类似于数据库的连接对象,可以理解为与数据库建立的一个连接,但是他的功能要比JDBC中的Connection对象丰富很多。

STEP 4:开始一个事务。在Java中定义一个事务操作的开始,这是使用Hibernate进行持久化操作必不可少的步骤

STEP 5:进行持久化操作。在这个步骤中可以读取或者保存Java对象。

STEP 6:结束事务。在操作完成之后还要进行显式的结束事务的操作。

STEP 7:关闭Session。类似于释放数据库的连接。

2 关于SSH架构的简单总结

Struts、spring、Hibernate在各层的作用

1)struts 负责 web层.

ActionFormBean 接收网页中表单提交的数据,然后通过Action 进行处理,再Forward到对应的网页。 在struts-config.xml中定义, ActionServlet会加载。

2)spring 负责业务层管理,即Service(或Manager).

1. service为action提供统计的调用接口,封装持久层的DAO,。

2.可以写一些自己的业务方法。

3.统一的javabean管理方法

4.声明式事务管理

5.集成Hiberante

3)Hiberante,负责持久化层,完成数据库的crud操作

hibernate 为持久层,提供 OR/Mapping。

它有一组 .hbm.xml文件和 POJO,是跟数据库中的表相对应的。然后定义DAO,这些是跟数据库打交道的类,它们会使用PO。

在struts+spring+hibernate的系统中,

对象的调用流程是:jsp-> Action-> Service ->DAO ->Hibernate。 数据的流向是 ActionFormBean接受用户的数据,Action 将数据从

ActionFromBean 中取出,封装成VO或PO, 再调用业务层的Bean类,完成各种业务处理后再forward。而业务层Bean收到这个PO对象之后,会调用DAO接口方法,进行持久化操作

3 Spring 相关知识

3.1 IOC , AOP

 

第三篇:ssh学习总结

ssh学习总结

20xx-03-21 17:37

1. 典型的J2EE三层结构,分为表现层、中间层(业务逻辑层)和数据服务层。层体系将业务规则、数据访问及合法性校验等工作放在中间层处理。客户端不直接与数据库交互,而是通过组件与中间层建立连接,再由中间层与数据库交互。

2. 数据服务层:orcale;其数据服务层实现数据的存储。

3. 中间层(业务逻辑层Spring+Hibernate):

中间层采用的是流行的Spring+Hibernate,为了将控制层与业务逻辑层分离,又细分为以下几种。 Web层,就是MVC模式里面的“C”(controller),负责控制业务逻辑层与表现层的交互,调用业务逻辑层,并将业务数据返回给表现层作组织表现,该系统的MVC框架采用Struts。

Service层(就是业务逻辑层),负责实现业务逻辑。业务逻辑层以DAO层为基础,通过对DAO组件的正面模式包装,完成系统所要求的业务逻辑。 由spring来负责!其目的就是通过编写接口配置applicationContext.xml实现ioc控制反转!控制反转就是让高层去调用底层,而不去关心我底层是怎么实现的(can or can not 而不是 how or why)。采用工场的模式也可以实现IOC,但需要编写大量的工场,每一个接口都需要对应一个工场。所以相当费时费力。 struts:

先来说说以前的开发的方式把!我shi根据STRUTS开发了自己的MVC框架,其实就是STRUTS的简化版本。主要功能就是页面的按钮的方法或者说事件方法和后台METHOD绑定,根据用户的业务请求触发的一系列操作。

大概的整个操作流就是:页面方法->SERVLET逻辑控制器通过取得的页面

METHOD(也就是struts2的ACTION),对号入座,初始化对应的FORM,然后对提交数据进行封装->指定类的PUBLIC方法中执行一系列逻辑操作(解析FORM,封装业务DTO)->业务DAO中进行业务处理,然后持久化到数据库中。简化视图就是:JSP->FILTER->SERVLET容器->FORM->LOGIC->SERVICE->DAO. 个人感觉结构清晰明了。不知道其他大虾如何看!!

以前有稍微了解过SSH但是没有太深入,因为感觉SSH实在太复杂了。把简单的问题复杂化了。除了配置还是配置,继承还是继承,说实在的。让初学者来学的话,门槛真的有点高了。不知道大家对于开发框架有什么看法呢?看了几天有点晕,但是的确这些框架够OO,学到了不少东西。

说说开发吧!系统已启动一堆的DEBUG信息,太能生了(是不是该计划生育了呢?)。不得不把自己的LOG4J的级别调成INFO来开发(反正只是测试的项目)。由于还没有深入的使用还没有发现SPRING真正带来了那些好处,真的有必要SPRING吗?只知道大家都说他是IOC和AOP,针对是业务上的管理。再说说HIBERNATE给我一个比较好的感觉就是对象的增删查改还不错。如果其他具体的业务感觉不怎么地。发现很多人都SQL还是自己去拼装,似乎不是HIBERNATE所说的什么面向对象的持久化之类的,个人感觉还不如使用IBATIS呢?

还有发现SSH很多拦截器==之类的过滤操作,这些会不会太影响性能了呢?反正目前还是费解中。

大家是否觉得这些框架是否该减减肥了呢?

hibernate:

hibernate 通过数据对象化,并按照业务逻辑配置合适的级联关系,已经不仅仅是能很方便的对单个对象进行数据库操作,同时可以方便的获取级联对象和实体对象的保存。而实体对象和数据库的映射又是另外一层约束(业务是可以在这里加上字长,是否为空的一些简单约束),同时hsql基于对象的思想,这是hibernate在oo上的出色的亮点。

同时hibernate 拥有数据缓存,在一次数据会话中(一个session的生命周期)存在一个一级缓存,可以让业务操作在会话中获取缓存中的数据,而在session结束的时候再对数据库进行批量处理,这样减少了对数据的操作压力。 二级缓存是在单机服务器中加入ehcached的cache,cache的生命周期长期存在,可提供给单机多个数据库会话共享二级缓存,这样就可以在跨session的范围内减少了数据库的访问,但用于事务和session的绑定,导致这块的代码需要很好的详细涉及,并且有比较好的并发思考能力。在缓存上面已经有强人将

hibernate 二级缓存的实现替换成可作为cache服务器的memcached,这样可以支持多台服务器共享二级数据缓存(这个场景比较适合针对查询,如果有事务会引入太多的复杂度,一般这样的情况共享缓存,在事务上还是会首先选择垂直分布的方式来分摊事务)。(在减少数据库操作方面最牛的是oracle的产品内存集群数据库)

但 hibernate 在做复杂的业务查询的时候,由于会将对象其他属性也获取出来,得道较多的不需要的数据,虽然后来的hibernate在这个方面做了优化,但还是推荐用native sql 来做,没有事务时避开缓存和多余数据 是效率的保证。

ibetis 使用起来十分简单,而且在sql上的配置具有更多的灵活性,并把sql区分模块集中,可以很大程度的分离关注点,(虽然hibernate 支持properties配置,但没有它灵活)

Spring的IOC控制反转 如果是说在配置参数上提供了方便不用编译,那就太片面了。它强大的是factoryBean的factory的创建,将自己手动创建的过程交给了 context来管理 factoryBean,通过依赖注入来初始化这些factoryBean,并由factoryBean来生产我们需要的对象。

至于Spring 的AOP,AOP 是一个思想,很多的东西都使用了这个思想,而Spring 是提供了一些实现(例如支持事务的AOP,例如提供AOP基础代码,之需要我们指定目标对象,拦截的前增强操作,后增强操作和切入点),并做了一些我们会常用的 aop Templete类,使用这些现成的类会很大程度的减少我们自己的代码量,和提高代码的安全性,减少问题的出现范围。而理解事务和处理事务生命事务,解决资源绑定的代码并不是一个很容易的事情,使用现有的代码无疑是不重复发明轮子而又只需要花费少些了解API代价的上上之选。

spring:

方到用时才明了。

Spring IOC:假设你现在有个逻辑模块用来计算权值,现在你需要换一下,但是以前那个还得保留,比如原来计算是+1现在要+10。如果用了IOC,那么你只需要在Spring配置文件里讲实现类改一下即可。(不过通常用来讲述IOC好像用的例子是:你要换数据库操作方式吗?从Hibernate换成iBatis)

Spring AOP:可对方法拦截,比如,某些用户有权限使用这个方法吗?用AOP拦截吧。(不过通常用来讲述AOP的好像用的例子是:你要记录日志总不能在每个文件里都写吧?)

Hibernate:理解面向对象思想,你就理解了Hibernate到底是干嘛的。至于很多人还是用的SQL查询那是他们不想用面向对象方法解决问题。

Struts、spring、Hibernate在各层的作用

1)struts 负责 web层.

ActionFormBean 接收网页中表单提交的数据,然后通过Action 进行处理,再Forward到对应的网页。 在struts-config.xml中定义<action-mapping>, ActionServlet会加载。

2)spring 负责业务层管理,即Service(或Manager).

1. service为action提供统计的调用接口,封装持久层的DAO,。

2.可以写一些自己的业务方法。

3.统一的javabean管理方法

4.声明式事务管理

5.集成Hiberante

3)Hiberante,负责持久化层,完成数据库的crud操作

hibernate 为持久层,提供 OR/Mapping。

它有一组 .hbm.xml文件和 POJO,是跟数据库中的表相对应的。然后定义DAO,这些是跟数据库打交道的类,它们会使用PO。

在struts+spring+hibernate的系统中,

对象的调用流程是:jsp-> Action-> Service ->DAO ->Hibernate。 数据的流向是 ActionFormBean接受用户的数据,Action 将数据从

ActionFromBean 中取出,封装成VO或PO, 再调用业务层的Bean类,完成各种业务处理后再forward。而业务层Bean收到这个PO对象之后,会调用DAO接口方法,进行持久化操作。

相关推荐