`
oak2008
  • 浏览: 78467 次
  • 性别: Icon_minigender_1
  • 来自: China
社区版块
存档分类
最新评论

完美的组合tomahawk+spring2.0+hibernate3.2

阅读更多
相对于struts1.2 mvc,spring mvc,struts2.0 mvc!我已经决定了用jsf.
前一段时间由于遇到性能问题,比如数据库的数据量很大,这样的情况下.怎么办呢!有两处方案可以选!
1.EJB3.0.
如果用EJB3.0解决,但是已经试验过,EJB3.0跟tomahawk不兼容,tomahawk里面有很多现成的jsf组件...文件上传,日期选框,html文本编辑器,树形菜单...
2.Spring+hibernate.

如果用spring+hibernate,跟spring+Hiberante集成较好,性能怎么解决呢,很简单,使用缓冲池就行了,dbcp或者c3p0,我目前是选择c3p0,效果非常好.
3.近来也学习了Seam,跟jsf的无缝集成,还更好地支持ajax,jsf的backBean已经放在业务类里了,验证已经放到entity Bean里,这样少写了很多类,因此,系统运行时,构建的对象是最少的,效率当然很高.不过,深入一些学习,发现存在一些难以解决的问题,
1.对国际化的支持,因为它的验证放到entity bean里了,要支持国际化,目前我还没有想到有效的解决办法.
2.对业务层的测试,因为Seam的业务层已经跟jsf混在一起来减少很多类了,测试业务层就离不开了Web容器,测试不如spring+hibernate方便.
3.jsp代码要比tomahawk写得多,tomahawk(myface)的界面用了Tiles之后,代码写得是最少了,facelets写得代码还要比它多.

开发周期和代码的移植性:
经过一段时间的技术选择和测试,我已经得到结论:
开发周期来说,spring+hiberante+tomahawk花的时间是最少的!
代码可移植性,也是它最好的!

看一下我的代码片段:
package org.dgut.lab.view.controller;

import java.util.ArrayList;
import java.util.List;

import org.dgut.lab.model.entity.Country;
import org.dgut.lab.view.builder.CountryBuilder;
import org.dgut.lab.view.util.FacesUtils;
/**
*
* @authors林春宇. 2008年6月毕业于东莞理工学院软件工程专业 QQ:445104284 电子邮箱:sunday502@126.come
*              Blog: http://oak2008.iteye.com/
*/
public class CountryListBean extends BaseController {
   
    /** Creates a new instance of CountryController */
    public CountryListBean() {
        this.countryBeans = new ArrayList();
    }
   
    private int command=0;
   
    private int pageNo=1;
   
    private long itemCount;
   
    private long totalPage;
   
    private int batchSize=10;
   
    private String name;
   
    private List countrys;
   
    private List countryBeans;
   
   
    public void init() {
        List countrys = this.serviceLocator.getCountryService().getCountryAndPage(batchSize,0);
        setItemCount(serviceLocator.getCountryService().getCountryAllCount());
        for (int i = 0; i < countrys.size(); i++) {
            Country country = (Country) countrys.get(i);
           
            CountryBean countryBean = CountryBuilder.createCountryBean(country);
           
            countryBean.setServiceLocator(this.serviceLocator);
           
            this.getCountryBeans().add(countryBean);
           
        }
       
       
    }
   
    public String findCountryByName() {
        command=1;
        countrys = serviceLocator.getCountryService().getCountryByNameAndPage(name,batchSize,0);
        setItemCount(serviceLocator.getCountryService().getCountryCountByName(name));
        pageNo=1;
        countryBeans.clear();
        for (int i = 0; i < countrys.size(); i++) {
            Country country = (Country) countrys.get(i);
           
            CountryBean countryBean = CountryBuilder.createCountryBean(country);
           
            countryBean.setServiceLocator(this.serviceLocator);
           
            countryBeans.add(countryBean);
        }
       
        return "country_list";
       
    }
   
    public String getAllCountryAndPage() {
        // FacesUtils.resetManagedBean("countryListBean");
        command=0;
        countryBeans.clear();
        List countrys = this.serviceLocator.getCountryService().getCountryAndPage(batchSize,0);
        setItemCount(serviceLocator.getCountryService().getCountryAllCount());
        pageNo=1;
        for (int i = 0; i < countrys.size(); i++) {
            Country country = (Country) countrys.get(i);
           
            CountryBean countryBean = CountryBuilder.createCountryBean(country);
           
            countryBean.setServiceLocator(this.serviceLocator);
           
            countryBeans.add(countryBean);
        }
       
       
        return "country_list";
       
    }
   
    public String toPage() {
        int p = getPageNo();
        this.pageNo=p;
       
        if(command==0){
            countryBeans = serviceLocator.getCountryService().getCountryAndPage(batchSize,(p-1)*batchSize);
        } else{
            countryBeans = serviceLocator.getCountryService().getCountryByNameAndPage(name,batchSize,(p-1)*batchSize);
        }
        return "country_list";
    }
   
    public String next() {
       
        int p = getPageNo() + 1;
        this.pageNo=p;
        if(command==0){
            countryBeans = serviceLocator.getCountryService().getCountryAndPage(batchSize,(p-1)*batchSize);
        } else{
            countryBeans = serviceLocator.getCountryService().getCountryByNameAndPage(name,batchSize,(p-1)*batchSize);
        }
        return "country_list";
    }
   
    public String prev() {
        int p = getPageNo() - 1;
        if(p<=0)
            this.pageNo=1;
        else{
            this.pageNo=p;
        }
        if(command==0){
            countryBeans = serviceLocator.getCountryService().getCountryAndPage(batchSize,(p-1)*batchSize);
        }else{
            countryBeans = serviceLocator.getCountryService().getCountryByNameAndPage(name,batchSize,(p-1)*batchSize);
        }
       
        return "country_list";
    }
   
    public String getName() {
        return name;
    }
   
    public void setName(String name) {
        this.name = name;
    }
   
    public long getItemCount() {
        return this.itemCount;
    }
   
    public int getPageNo() {
        return pageNo;
    }
   
    public long getTotalPage() {
        this.totalPage = getItemCount() % 20 == 0 ? getItemCount() / 10
                : getItemCount() / 10 + 1;
        log.info("***ResourceBundle"+this.getMessageString("uT",new String("code")));
        return this.totalPage;
    }
   
    public void setPageNo(int pageNo) {
        this.pageNo = pageNo;
    }
   
    public List getCountryBeans() {
        return countryBeans;
    }
   
    public void setItemCount(long itemCount) {
        this.itemCount = itemCount;
    }
   
}

我的这个项目,到现在已经完全进入了编码阶段,理论上,很快会完成的.

由于时间的仓促,这篇文章就写到这里,不足之处,还望多多交流.
我的qq:445104284
分享到:
评论

相关推荐

    jsf+spring2.5+jpa(hibernate)的jar包

    这是jsf+spring2.5+jpa(hibernate)的jar包,很多人为了jsj环境而配置半天,在此提供jar包共享。注:除了ajax4jsf和tomahawk-1.1.3.jar,因为csdn只让我上传20mb,大家自己可以下一下自己试试。

    JSF+Spring+Hibernate Hello学习程序

    自己学习JSF, Spring, Hiebernate的 HelloWorld程序,开发环境MyEclipse,含有Tomahawk、RichFaces部分集成实例。具体包括登录、注册、树控件、日历等。可用作平时学习之用! 由于大小的限制,缺少的包请到相关...

    tomahawk src

    "Tomahawk src"指的是Tomahawk项目的源代码,它是一个专为JavaServer Faces (JSF) 2.0框架设计的组件库。这个组件库提供了丰富的UI元素和功能,帮助开发者构建用户界面。版本1.1.13是这个特定源代码的发行版本。 ...

    tomahawk jar

    标题中的“tomahawk jar”指的是Tomahawk库的Java Archive (JAR) 文件,这个版本是1.1.13,专门针对JSF 2.0框架设计。JSF是一种Java EE标准,用于构建可维护、可扩展的Web用户界面,而Tomahawk库则增强了JSF的功能,...

    tomahawk-1.1.8.jar

    tomahawk-1.1.8.jar,tomahawk-1.1.8.jar,tomahawk-1.1.8.jar

    tomahawk-1.1.8-bin.zip

    《深入解析Tomahawk 1.1.8在JSF 1.1中的应用》 Tomahawk 1.1.8-bin.zip是一款基于JavaServer Faces (JSF) 1.1框架的开源组件库,它由Apache MyFaces社区开发并维护。这个压缩包包含了Tomahawk 1.1.8版本的所有必要...

    tomahawk12-1.1.13-src.tar.gz

    《深入探索Tomahawk网络工具:从源码到实践》 Tomahawk,作为一个网络工具,相较于tcpreplay在某些方面表现出更为优越的性能和易用性,这使得它成为了网络流量回放和分析领域的一颗耀眼新星。在本文中,我们将详细...

    tomahawk20-1.1.11-bin.zip

    标题中的"tomahawk20-1.1.11-bin.zip"是一个软件包,它很可能包含Tomahawk项目的特定版本(1.1.11)的二进制文件。Tomahawk通常指的是Apache MyFaces Tomahawk项目,这是一个开源JavaServer Faces (JSF)组件库,提供...

    tomahawk-1.1.0.jar

    tomahawk包,用于JAVA开发的JAR包,网站页面组件开发

    tomahawk-1.1.3

    "Tomahawk-1.1.3" 是一个软件版本号,这通常指的是某个特定的迭代或更新,可能包含性能优化、新功能的添加或已知问题的修复。在这个上下文中,"Tomahawk"很可能是一款专为IT行业设计的应用程序,可能是音乐播放器、...

    tomahawk-源码.rar

    《深入剖析Tomahawk源码》 Tomahawk,这个名字源于美洲原住民的一种战斧,作为软件领域的项目,它代表了一种强大的工具或者框架。本文将深入探讨Tomahawk的源码,揭示其内在的设计理念和技术实现,帮助开发者更好地...

    tomahawk-sandbox配置

    用的是tomahawk-sandbox。代码很简单就是配置很麻烦。晚上的大多都没有提供jar包,所以即使你配置错误也会出现错误。我将配置的信息整理,做了demol,jar包截图整理文档,把我遇到的错误误区整理一下。

    tomahawk1.1

    一款用于测试入侵防御系统(IPS)的工具,值得学习。

    tomahawk12-1.1.8-bin

    "Tomahawk12-1.1.8-bin" 是一个特定版本的开源Java服务器页面(JSP)组件集合,主要包含JSF(JavaServer Faces)分页控件和其他相关控件。这个压缩包文件“tomahawk12-1.1.8-bin.zip”显然是为了方便开发人员下载和...

    100%雷蛇血统的机壳来了!! Razer TOMAHAWK ATX机壳开箱评测

    【Huan】_100%雷蛇血統的機殼來了!!_Razer_TOMAHAWK_ATX機殼開箱評測

    tomahawk JSF reference pdf

    ### Tomahawk JSF Reference PDF概述 在JavaServer Faces (JSF)的生态系统中,《Tomahawk JSF Reference PDF》是一份重要的参考资料,为开发者提供了关于Tomahawk组件库的全面指南。这份文档包含了对Tomahawk标签库...

    通信行业:博通交付Tomahawk_4交换芯片,11月我国5G手机销量超500万部-20191215-中信建投-11页.pdf

    通信行业:博通交付Tomahawk_4交换芯片,11月我国5G手机销量超500万部-20191215-中信建投-11页.pdf

    音乐播放器Tomahawk.zip

    Tomahawk 是一个支持多平台的音乐播放器。在 Ubuntu 下的安装方法: sudo add-apt-repository ppa:paulo-miguel-dias/tomahawk sudo apt-get update sudo apt-get install tomahawk 标签:Tomahawk

    barefoot:在没有 springboot 或 webserver/tomcat 的情况下托管 spring-mvc RestControllers-开源

    标题中的“barefoot”是一个独特的框架,它提供了一种在没有Spring Boot或传统的Web服务器(如Tomcat)的情况下运行Spring MVC RestControllers的方式。这个概念挑战了我们对Java Web应用程序的传统理解,通常这些...

Global site tag (gtag.js) - Google Analytics