论坛首页 Java企业应用论坛

学习SSH的阶段总结

浏览 4588 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-10-22  
OO
  先来说说以前的开发的方式把!我司根据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很多拦截器==之类的过滤操作,这些会不会太影响性能了呢?反正目前还是费解中。
大家是否觉得这些框架是否该减减肥了呢?
   发表时间:2008-10-23  
方到用时才明了。
Spring IOC:假设你现在有个逻辑模块用来计算权值,现在你需要换一下,但是以前那个还得保留,比如原来计算是+1现在要+10。如果用了IOC,那么你只需要在Spring配置文件里讲实现类改一下即可。(不过通常用来讲述IOC好像用的例子是:你要换数据库操作方式吗?从Hibernate换成iBatis)

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

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


呵呵,这是我的第一帖。
希望没有误导楼主。。。
0 请登录后投票
   发表时间:2008-10-24  
引用
Hibernate:理解面向对象思想,你就理解了Hibernate到底是干嘛的。至于很多人还是用的SQL查询那是他们不想用面向对象方法解决问题。

这个需要开发者或者设计者要有很好的面向对象的功力。估计我的功力还不够火候,所感觉与其把这些操作让HIBERNATE来做,还不如自己搞定,毕竟有比较强的可控性。
但是真的怀疑HIBERNATE能做到那么好吗?
有哪位大侠能说说自己对HIBERNATE的看法呢?
0 请登录后投票
   发表时间:2009-02-13  
由于还没有深入的使用还没有发现SPRING真正带来了那些好处,真的有必要SPRING吗?只知道大家都说他是IOC和AOP,针对是业务上的管理。再说说HIBERNATE给我一个比较好的感觉就是对象的增删查改还不错

  我也有同样的感受,可能是现在还是在学习Spring的阶段,还没发现它的好处~~
0 请登录后投票
   发表时间:2009-02-15   最后修改:2009-02-15
    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代价的上上之选。  


0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics