1 架构肯定要在多年的基础上做好了的, 适用自己所在行业任何实际项目中.
2 有新项目,如果与以前的功能不同, 用自己的架构基础上开发功能.
架构 包括内容:
一般java项目是: 
a 集成连接池(apache的就行),
b 日志(apache的就行)
c 导出excel(apache的就行)
d spring, 
e (不要hibernate,可以考虑ibatis,一般jdbc自己在spring基础上做,性能最好,扩展最方便)
d axis(apache,webserivce包)
e mima(apache的网络通信包)
f 中小项目要集成内存数据库,如果缓存 200万以内的记录, 直接自己用map缓存性能最强,最方便.
g 使用者表,功能表,使用者机构
h 登录过程,
i 在g,h的基础上做 公共授权核心处理,提供所以用户与功能的授权api
j 如果有流程,则在 g,h,i的基础上再开发工作流核心处理: 流程定义,流程实例产生,流程ID产生,流程控制(下一步,回退,暂停等功能)
以上就是一个软件的基础要素,
-----------------------------
下面是一个软件结构的核心层次定义,就是任何功能开发,都要用这种试,新手,老新一用就通,维护过程统一.
1 dao层接口,jdbc方式实现,net网络方式实现,用来查询,增加,修改数据最底层操作,
  定义以下几个接口 insert, delete, update, findData(带where条件半通用查询), 批insert,批update,批delte, 7个基本接口.
2 service层接口,pojo实现, 基本接口也如上,
  serivce一般用来封装 dao层给外面的程序用, dao层只能是serivce调用,其它功能中最多只能到serivce层.
3 business,业务层, 复杂的业务处理,if判断,授权决断,数据转换.....所有业务内容,处理完就给 action.
4 action层, 调用business处理业务,封装数据...拿到结果
4 webserivce层 也是第四层, 调用business处理业务,封装数据...拿到结果
5 异常层 1,2,3,如果不是业务需要,则都不控制异常, 如果业务有需要则自己处理异常,同时产生自己的定制异常,全部在这一层接信,处理...保证系统不出问题:这种异常隔离层 内置到action, webserivce层.全部定义完成之后, 开发功能过程:
1 开发dao-->serivce-->business--->action(或webserivce),并内置异常隔离层.
一般来说,一开始大家一起把dao,serivce 全部开发完成(实际基本的7个方法,也可以扩展更多),
然后分配功能给大家做, 各做各的business, action, jsp(项目一般用work等开源框架就行),
2 开发完成后,通过公用的授权,把功能分开登录者使用....
3 重复 1,2项目开发完成......
4 总结项目经验----->变成通用产品(集成部分基本行业中最基本的功能), 然后其它项目从这个上面再开发.....
5 最后变成 taobao 这样强大的软件...哈哈

解决方案 »

  1.   

    以上产品结构,在数据量在单表 10亿行记录的系统中不存在任何问题,
    大数据量关键是dao这层api的开发,分页操作最为复杂(baobao网这一层能操控多个数据库).
    (spring支持多数据源配置,要多少就可以多少,一般最少配置2个数据源以备用)
      

  2.   

    别外,如果觉得开发 dao,serivce麻烦, 可以自己做个代码生成工具,
    只要输入表名自动生成 bean, dao, serivce 所有接口,实现类 1秒搞定...:)
    特别是dao, update手写真麻烦 肯定是做个通用工具自动生成啊.
      

  3.   

    一个项目最多2、3个月,怎么从头开发,明显不现实而且不是web方面的,根本没什么框架,只能找开源的
      

  4.   

    学习了.我用的模式一般是 DB--dao--dto--service---action.
    兄台你的bussiness层可不可以详解一下? 饥渴求学中
      

  5.   

    bussiness层 原来在我们公司也是没有人使用,是我创立的,但是在这个行业来说并不是独创,
    因为很多做平台的公司,他们从来不公开产品结构, 大家无从学习, 也可以说我是引进国内二次开发平台的体系.
    为了便于功能独立性,维护性一个功能包括以下几部分:
    1层 dao 这个不用说了都知道.
    2层 service 原则上dao不能随意给别人调用,所以用service封装成原子服务如 delete(long id),没有业务.
    3层 bussiness ,由于dao,serivce是原子性的, 所以bussiness可以调任何service,如登录业务:
        a) 调用用户serivce,检查用户,检查密码.
        b) 处理用户 session等其它内容
        c) 如果正常用户,则处理功能,调用权限serivce,得到菜单权限,进入系统后只显示授权菜单.
       ......这就是业务,这些要独立出来,以后别人也能共用这块逻辑..
    4层 action, 接收bussiness处理好的结果, 处理页面,验证页面数据有效性,验证完后交给bussiness.
    4层 webserivce (有时要提供webservice服务,调用bussiness发布数据,不需要action,jsp了).另外还有,辅助包,不能算层:
    dto, 普通bean,可以在entity上组合,继承,扩展而成,也可以是随更搞的.
    entity, 严格与数据库对应的实体bean
    helpers, 在这个功能中大量重复的代码片段, 抽出来做个一个个helpers叫协助类, 
    这样bussiness逻辑更清楚, 有时bussiness代码非常大的.bussiness 叫业务逻辑,处理项目中业务相关的东西, 业务随意变,只改逻辑就行,
              每一个功能都有自己的 bussiness, 从各serivce中拿到数据进行业务处理.
    serivce 由于只用来公开dao, 不做处理或只做少量的参数拆分工作, 没有业务代码, 这样一来独立性强.
            由于没有业务,所以能被任何需要数据的 bussiness 调用, 代码重用性非常高.
      

  6.   

    提示,不要把业务代码,判断,处理逻辑写在 action里 
    action本身应当只处理页面来的东西,校验数据,整理参数, 处理session, 
    如果这些不通过,根本不要调 bussiness 来处理, 这样以来action层任务明确, 简单明了.action + 页面 只有一个任务: 做好用户的交互漂亮的显示数据, 严格校验提交用户参数.