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

改进架构,实现动态数据源,结束java开发生活

    博客分类:
  • guzz
阅读更多
如何不用写java代码来完成开发?

对于大部分的产品和项目来说,页面变化是非常头痛的事情。每次小功能上线,新客户到来,都需要进行定制改造,不断的开发维护。每次开发一方面要改动页面,一方面要改动服务器代码,然后部署。而借助动态数据源,可以不用开发后端应用,直接完成功能开发。

新功能开发时,只需要定义需要的数据格式和获取方法,如通过xml上传1个sql语句,系统根据sql语句自动提取数据并转成通用的格式。开发过程中,后台java开发部分只是写好sql并且上传,这样前台通过某一个servlet可以动态的读取执行sql,并将结果按照json返给前端,以后所有的开发只需要前端做ajax实现页面即可。

完整业务流程如下:

1. 用户在前端操作,如需要读取经济类图书。

2. 前端js判断是什么操作,然后发送ajax请求到:http://services.guzz.org/commonServlet?id=f2354239sfASASFASfasf6&catId=47&keyword=jingji.....

3. 服务器端有一个类似dispatcher-servlet的东西(我们这儿的commonServlet),拦截请求,根据id知道加载数据需要执行名称为f2354239sfASASFASfasf6的sql文件,执行时需要参数:catId=47和keyword=jingji

4. commonServlet从文件系统中读取f2354239sfASASFASfasf6.xml文件(这个文件在一个隐藏的目录下,从浏览器是不能直接获取到的;集群环境会存放在集中存储上),解析sql以及对象映射ORM。

5. commonServlet打开数据库连接,根据sql构造查询语句,将第一步传入的参数全部作为命名参数传给查询语句,执行查询。

6. commonServlet把查询的ResultSet根据ORM转成java类,再转成json,返回前台。

7. 前台根据json构造出页面并展示。结束流程。

在整个过程中,有2个关键步骤,一是动态加载SQL并进行ORM映射,一是自动进行sql所需要参数的类型转换和匹配,进行命名查询。如果系统规模较大,还需要解决查询时分库分表的问题。对于这种sql使用方式,由于在系统上线时,并不知道以后会用哪些sql语句,我们称作动态SQL。

实现方式:

步骤1. 实现servlet。定义一个普通的servlet,或者jsp,或者webwork/spring action,接收参数,获取到sql的id,以及所有传入的参数,然后转入处理类处理。处理完成后,将返回结果转成json返回前端。

步骤2. 实现动态SQL加载与查询。处理类根据id加载sql并执行,返回数据库查询结果。guzz 1.2.8 beta2提供了动态SQL服务,根据此服务可以直接实现此功能。详细说明:http://code.google.com/p/guzz/wiki/TutorialDynamicSQLService

好处:

实现以后,基本上后台开发就会很稳定很稳定了,大部分的工作只是前端做页面。可以大幅度的降低开发成本,提高开发进度。

上面的实现是以上传文件来定义和管理sql,也可以通过数据库来管理。这样管理起来更加简单。

如果使用guzz作为动态SQL提供者,可以自动获得命名查询,类型自动匹配(转成枚举类型都可以),分库,自动分切表,自定义属性表等附加支持。

啧啧~~
分享到:
评论
2 楼 shaomeng95 2011-02-10  
思路不错哦!
1 楼 norain2050 2010-05-31  
goog,相当强大。

相关推荐

    java报表jfreechart开发

    ### Java报表JFreeChart开发知识点总结 #### 1. 简介 ##### 1.1 什么是JFreeChart JFreeChart是一款免费且开源的Java图表库,它提供了多种类型的图表绘制功能,如饼图、条形图、折线图等。JFreeChart适用于各种Java...

    JAVA 开发JSP+ACCESS网上拍卖平台系统(源代码+论文)

    1. **JSP技术**:JSP是Java Web开发中的一个重要组成部分,用于动态生成网页内容。它将业务逻辑与表现层分离,允许开发者使用HTML、CSS和JavaScript来设计页面布局,同时在服务器端使用Java编写业务逻辑。JSP文件...

    JAVA网上拍卖系统的设计与实现(源代码+论文).zip

    《JAVA网上拍卖系统的设计与实现》是一份涵盖了Java编程、软件工程、电子商务等多个领域的综合性项目。这个系统的主要目的是提供一个在线平台,使用户能够进行拍卖活动,类似于eBay等知名的拍卖网站。以下将从系统...

    基于java+J2ME的手机贪吃蛇游戏开发项目设计与实现(项目报告+源代码).zip

    - 设计阶段:详细阐述了游戏架构设计,包括数据结构的选择、用户界面设计以及游戏逻辑的实现方案。 - 编码实现:描述了关键代码的编写,如蛇的移动、碰撞检测、食物生成等模块的实现。 - 测试与调试:报告了测试过程...

    毕业答辩-JAVA贪吃蛇游戏毕业设计(源代码论文).rar

    标题“毕业答辩-JAVA贪吃蛇游戏毕业设计(源代码论文).rar”揭示了这是一个关于JAVA编程语言的项目,具体来说是一个贪吃蛇游戏的毕业设计。这个项目不仅包含了游戏的源代码,还有相关的毕业论文,说明了设计者可能在...

    基于java的在线考试信息管理项目设计与实现设计与开发毕业设计(源代码+项目报告).zip

    9. **项目报告**:“Smart系统-公共资源模块的设计与开发项目说明报告.doc”可能详细阐述了项目的背景、目标、技术选型、系统架构、功能模块、实现过程、测试结果以及未来改进方向等内容。 10. **源代码**:提供的...

    基于JAVA CS远程监控系统软件的实现(源代码+论文).rar

    标题"基于JAVA CS远程监控系统软件的实现(源代码+论文).rar"揭示了这个压缩包内容的核心:一个采用Java技术构建的客户端-服务器(Client-Server,简称CS)架构的远程监控系统。这个系统不仅包含了完整的源代码,还...

    JAVA贪吃蛇游戏毕业设计(源代码+论文).zip

    这个项目不仅包含了游戏的完整源代码,还有一篇详细阐述设计思路和实现过程的毕业论文,对于学习Java编程和游戏开发的学生来说,是极具参考价值的资源。 【描述】:在JAVA贪吃蛇游戏毕业设计中,开发者可能采用了...

    Java毕业设计-基于springboot开发的高校专业实习管理系统设计和开发-毕业论文(附毕设源代码).rar

    SpringBoot作为现代化的Java开发框架,以其简洁的配置、自动化的依赖管理和强大的微服务支持,深受开发者喜爱。在这个系统中,它被用来简化开发流程,提高开发效率。 一、系统背景与目标 随着高等教育的发展,高校...

    java基于BS结构下的OA流程可视化的研究与实现(源代码+论文).rar

    Java基于BS结构下的OA(Office Automation)流程...通过对这个项目的研究与实现,我们可以深入理解Java在BS架构下的Web开发,以及OA流程管理的原理和实践,这对于提升企业信息化水平、优化业务流程具有重要的参考价值。

    JAVA文件传输(论文+源代码)

    【标题】:“JAVA文件传输(论文+源代码)”是一个关于使用Java进行文件传输的毕业设计项目,涵盖了FTP、C/S和B/S架构的探讨,并利用JBuilder作为开发环境。 【描述】:该项目首先介绍了Java语言及其在文件传输中的...

    JAVA源码JAVA打飞机游戏毕业设计(源代码+论文)

    ### JAVA源码JAVA打飞机游戏毕业设计(源代码+论文) #### 一、项目背景与意义 在当前的游戏开发领域,随着技术的进步和用户需求的不断变化,利用Java语言进行游戏开发成为了一种趋势。本项目旨在通过实现一个基于...

    java基础知识总结(超级经典)

    JDK,即Java开发工具包,包含了Java开发所需的编译器和运行环境(JRE)。JRE包括Java虚拟机(JVM)和类库,用于支持Java程序的运行。配置环境变量是为了能在命令行任何位置使用JDK提供的命令,其中JAVA_HOME是JDK的...

    基于java的小型图书管理系统设计与实现毕业设计.docx

    - **数据库服务器**:SQL Server 2000(通过ODBC数据源连接) - **Web服务器**:Tomcat - **开发工具**:Eclipse 6.0 - **环境配置**:包括JDK、Tomcat安装路径及环境变量设置等。 #### 三、系统概述 - **需求...

    JAVA在线考试管理系统(源代码+论文+开题报告+外文翻译+英文文献+答辩PPT).rar

    管理员可以查看整体成绩分布,分析考试难度和学生掌握情况,为教学改进提供数据支持。 外文翻译和英文文献则可能是系统开发过程中的参考资料,帮助开发者了解国内外同类系统的最新进展和技术趋势。答辩PPT则是...

    Java SSM基于BS架构的实习管理系统【优质毕业设计、课程设计项目分享】

    Java SSM基于BS架构的实习管理系统是一个典型的Web应用开发实例,它涵盖了Java后端开发、Spring框架、Spring MVC以及MyBatis等核心技术。这个项目旨在为教育机构或企业提供一个便捷的实习管理平台,用于学生实习的...

    基于java的出租车计价器系统(项目报告+答辩PPT+源代码+数据库+截图+辅导视频).zip

    《基于Java的出租车计价器系统》是一款毕业设计项目,主要使用Java编程语言进行开发,旨在模拟实际出租车计费逻辑,提供一个完善的计价解决方案。该项目涵盖了从需求分析到系统实现的全过程,包括答辩PPT、源代码、...

    java源码:业务流程管理(BPM)和工作流系统 Activiti.zip

    Java源码:业务流程管理(BPM)与工作流系统Activiti是企业级软件开发中的重要组成部分,尤其在实现高效、灵活的业务自动化方面扮演着关键角色。Activiti是一款开源的工作流引擎,它基于模型驱动的架构(MDA),旨在...

    泡泡堂战车游戏JAVA版源码

    对于学习Java游戏开发或者希望改进这个游戏的人来说,这是一个宝贵的资源。 【标签解析】 - "java": 表明游戏是用Java语言编写的,这涉及到Java的基础语法、类库和框架,如JavaFX或LibGDX。 - "源码软件": 指的是...

    手机网络游戏 java源文件

    手机网络游戏是移动设备上一种非常流行的游戏类型,它利用Java编程语言进行开发。Java作为一种跨平台、面向对象的编程语言,特别适合构建可移植性强、性能稳定的游戏应用。本资源包含的是手机网络游戏的Java源文件,...

Global site tag (gtag.js) - Google Analytics