看一下SPRING 吧,它前端实现了类似STRUTS的VIEW层, 也集成了HIBERNATE的持久层,我没有用过SPRINGR的VIEW层,但我们的项目用到了SPRING 管理HIBERNATE的持久层,很简单.

解决方案 »

  1.   

    我的小型开发框架AFC,其目的是极度简化小型应用程序的开发与部署,在应用层不需要XML,不需要配置文件,不需要JSCript,只需要掌握纯Java和SQL即可.在内部银行程序就是用此框架开发(体验地址http://www.coyizz.com),其中的"经费单据输入"功能的代码如下:package com.coyizz.user;import com.coyizz.base.*;
    import com.coyizz.app.AppConns;import java.sql.Types;
    import java.sql.SQLException;
    public class JfdjsrBean extends ComplexTableDsBean {
        DataStore ds;    public void onInit() {
            ds = new DataStore("dsMain", "select ssnd,bh,je,zrbm,jfkm,zy,kpr,kprq,fkqk,shr,shbm,shrq,timestamp from app.jfdj", getConn());
            ds.setColLabel("所属年度,编号,金额,责任部门,经费科目,摘要,开票人,开票日期,付款情况,审核人,审核部门,审核日期,时间戳");
            ds.setColCodeTable("kpr", "select code, note from userA order by code");
            ds.setColCodeTable("fkqk", "select code, note from fkqk order by code");
            ds.setColCodeTable("shr", "select code, note from userA order by code");
            ds.setColCodeTable("jfkm", "select code,qc from jfkm order by code");
            ds.setColCodeTable("zrbm", "select code, note from zzjg order by code");
            ds.setColCodeTable("shbm", "select code, note from zzjg order by code");
            ds.setLockForRange("经费单据", "zrbm", "kprq");
            setTitle("经费单据输入");
            setCan("jfdjsr");
            ds.setColDefa("ssnd", Hz.subStr(Hz.getCurDateStr(), 0, 4), false, false);
            ds.setColDefa("kprq", Hz.getCurDateStr(), false, false);
            ds.setColReadOnly("fkqk,shr,shbm,shrq,timestamp", true);
            ds.setColOnChangeEnable("ssnd,jfkm,zrbm", true);
            ds.setZzjgLimit("zrbm", getZzjgMask("bmfw"));
            if (getWorkMode().equals("input"))
                ds.getSql().setAsstWhere("(shr is null or shr = '')");  // 审核后的单据就不能再修改
            regDs(ds);
        }
        
        public void onCalcItems() {     // 当一个字段输入改变是, 相关字段可输入值随之变化
            if (ds.getRowCount() == 0)
                return;
            String nd = ds.getItemString(1, "ssnd");
            if (nd.equals(""))
                nd = "0";
            ds.setColCodeTable("zrbm", "select code, note from zzjg where code in "
                    + "(select zrbm from jfndjh where nd=" + nd + ")");
            ds.setColCodeTable("jfkm", "select code,qc from jfkm where code in "
                + "(select jfkm from jfndjh where nd=" + nd + " and zrbm='" + ds.getItemString(1, "zrbm") + "')");
            ds.setColCodeTable("kpr", "select code,note from userA "
                + "where zzjg='" + ds.getItemString(1, "zrbm") + "'");
       }
        
    }