`
luozhaoyu
  • 浏览: 347626 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

struts, spring, hibernate, freemarker的使用体会小结

阅读更多
语言这个东西,长时间不摸就是会忘,你会的技术越多,忘的也就越多。所以要勤写博客,做好烂笔头。

web开发这一块,我心中理想的开发组合是html+javascript+python+c。其中主体是javascript和c,前者是做RIA的主力,后者用来快速成型,而且有cpython这样功力不差的解释器以及五花八门的类库可以解决80%问题。剩下20%吃速度的需求都用c编写好动态链接库,然后使用python的ctype或者其它方法调用就好啦(这里只是说开发语言的选择)

至于java这个东西呢,哎……总有点不给力的感觉,毕竟是强类型语言,转换来转换去,看着乱飞的范型心中就无法平静。而且还不知到oracle老大哥心底到底在想什么,是拿java老实做IT服务,还是只作为专利战的武器……废话太多了,凭着有点记忆,赶紧记一下java这几个框架的心得。

首先说spring
spring中最重要的是IoC控制反转了。简单的说,就是如果有两个模块AB,当A要用B时,A就要在自己的代码里面写上B的名字,详细的过程。可是这样就造成了强耦合,万一B改动了,这边也要改,麻烦。所以就把A和B通通都交给spring管理,spring看到有合适的B就把一个B生成,发给A(DI依赖注入)。A和B都控制不了将来的事,这都靠spring调度,A和B只提需求。这都是通过反射实现的。
spring的AOP是面向切面编程,就是把一个函数调用的一前一后包裹起来,有点像python的装饰器。这其实也是装饰器的设计模式,不过觉得java里好麻烦,不知道是怎么实现的。
还有,spring一般作为框架的中心,配其它框架一起使用。

其次是freemarker
回想起当年教我组的女生freemarker:因为没有编程基础,所以她上来就直接想往jsp里嵌代码,被我及时制止,赶紧教了freemarker……她当时大惑不解,说为什么要这么麻烦。我就只好写一个个样例程序,给她演示如果不用freemarker,代码未来会演化成什么样……
freemarker的好处就是无法运行java代码,这实在是太好了。
freemarker的坏处就是变量不赋值就要抛出异常,YYD,if满天非,丑死了,都快疯了……
然后生成了静态页面后,如果改了模板,一定要重新生成静态页面,不然就悲剧了
还一个不好就是freemarker里面的key必须是string……

然后是struts2
呃,其实我不怎么看好struts2,因为在我眼里只会struts两个功能:一个是MVC框架,一个是各种tag……struts2的MVC首先是有一个struts-config.xml的文件,里面配了各种url跳转到哪些地方。它的controller是ActionServlet,负责读取这个文件。struts2的标签库我是不用的,感觉虽然方便,但是怕扰乱布局,怕跨浏览器支持问题(?可能不对)。还有就是觉得spring mvc就够用了,没必要再引一个struts2,怕麻烦。因为这两点,所以不怎么看好struts2……(struts2的拦截器interceptor感觉也和spring的aop重叠,记住DRY)

最后是hibernate和ibatis
第一反应就是可怕的ORM,以及更可怕的HQL……
觉得hibernate的精髓在于缓存。一级缓存在内存,缓存事务且永不过期;二级缓存可在内存、硬盘,缓存不常用且不怎么并发的类的实例,比如select * from table中所有的对象,都按照id缓存。hibernate还有按查询语句缓存等,这都是数据缓存和事务缓存了,作用还是蛮大的(最直接的应该是页面缓存)
其实hibernate我也不是很清楚,为什么说一次会查处很多很多没必要的数据,所以还亡羊补牢似的弄了一个延迟加载……
我觉得ORM这个东西轻量级就好了,尽量每次都是对单表的ORM操作,如果有级联、join的话就用自己手写的select,然后把数据集包装成一个arraylist<Map<string, object>>不也挺好?之前我在项目里就这样干的(反射完成ORM,把级联select全部持久化到硬盘),还是比较爽的。
hibernate在面向对象编程这方面是太偏执了,java可以OOP,hibernate也可以OOP,但广大的RDMS老人家们可不是都是源自OOP思想设计的。如果是面向对象数据库,搞不好会好多了吧?
ibatis我很喜欢,直接把sql语句写配置文里,好查也好管,不错。

最后一句,互联网应用以查询为主,谁能应付高磁盘I/O谁就能胜出。这里我看好列存储然后是KV存储数据库
分享到:
评论

相关推荐

    struts1+spring+hibernate+freemarker一个小例子

    在这个“struts1+spring+hibernate+freemarker一个小例子”中,我们将探讨这四个组件如何协同工作,以及它们各自的核心功能。 首先,Struts1是MVC(模型-视图-控制器)设计模式的一个实现,主要用于处理HTTP请求和...

    struts2+spring2.5+hibernate3.2 + freemarker 全新功能实现的增删改查+freemarker 摸版

    struts2+spring2.5+hibernate3.2 + freemarker 全新功能实现的增删改查+freemarker 摸版 struts2 的方式自己去看简单。 spring2.5 是用注释来注入 hibernate3.2 是用ejb3注解映射关系 hibernate3 +个属性可以自动...

    struts spring hibernate组合的留言板程序

    Struts、Spring 和 Hibernate 是Java Web开发中的三大主流框架,它们各司其职,共同构建了一个高效、可扩展且易于管理的Web应用程序。Struts作为MVC(模型-视图-控制器)架构的实现,主要负责处理用户请求并进行业务...

    图解MyEclipse配置struts+hibernate+spring+FreeMarker.rar

    在企业级Web应用开发中,Struts、Hibernate、Spring和FreeMarker这四大框架的集成使用已经成为主流。本资料旨在图解如何在MyEclipse集成开发环境中配置并实现这四者的高效协同工作。 一、Struts框架 Struts是一个...

    Struts2,Spring,Hibernate jar包下载

    Struts2、Spring和Hibernate是Java开发中三大主流的开源框架,它们分别专注于Web层、业务层和服务层的管理,组合使用可以构建出强大的企业级应用。这些框架的jar包是开发人员日常工作中必不可少的工具。 **Struts2*...

    Spring,hibernate,struts jar 最新jar包

    Spring、Hibernate和Struts是Java开发中非常重要的三个框架,它们构成了经典的MVC(Model-View-Controller)架构,被广泛应用于企业级Web应用开发。这些框架极大地简化了开发过程,提高了开发效率,并且提供了良好的...

    struts2 spring hibernate框架技术与项目实战 光盘源码上

    Struts2、Spring和...总之,Struts2、Spring和Hibernate的整合使用,能够构建出高效且易于维护的企业级Web应用。这份源码资料提供了一个实战案例,对于想要深入学习这三大框架的开发者来说,是一份宝贵的参考资料。

    struts+spring+hibernate图解

    Struts、Spring 和 Hibernate 是Java Web开发中的三大框架,它们各自负责不同的职责,组合使用能够构建出高效、灵活的企业级应用程序。这篇教程旨在为初学者提供一个清晰的图解指导,帮助他们理解这三个框架如何协同...

    Struts+Spring+Hibernate+Freemarker新闻系统

    Struts、Spring、Hibernate和Freemarker是Java开发中常用的四大框架,它们分别在MVC模式下承担不同的职责。这个新闻系统就是利用这四个技术进行整合构建的,旨在提供一个高效、灵活且易于维护的后台管理系统,同时...

    struts spring hibernate中文文档

    Struts、Spring和Hibernate是Java开发中非常著名的三大框架,它们各自解决Web应用程序中的不同问题,而当结合在一起时,可以构建出强大的企业级应用。下面将分别介绍这三个框架的核心功能、工作原理以及它们如何协同...

    struts2 spring hibernate integration

    Struts2、Spring和Hibernate是Java开发中三大重要的开源框架,它们各自负责Web应用的不同层面。Struts2作为MVC框架处理HTTP请求和视图展示,Spring提供了依赖注入(DI)和面向切面编程(AOP),以及服务层管理,而...

    struts2 spring hibernate 整合架构

    Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们各自负责Web应用的不同层面,协同工作可以构建出高效、可维护的系统。Struts2主要用于处理MVC(Model-View-Controller)架构中的Controller部分,Spring...

Global site tag (gtag.js) - Google Analytics