深蓝色心情

过来聊聊~~~~

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  31 Posts :: 0 Stories :: 46 Comments :: 0 Trackbacks
如何不用写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提供者,可以自动获得命名查询,类型自动匹配(转成枚举类型都可以),分库,自动分切表,自定义属性表等附加支持。

啧啧~~ 

posted on 2010-05-27 14:52 深蓝色心情 阅读(2938) 评论(5)  编辑  收藏 所属分类: Java

Feedback

# re: 改进架构,实现动态数据源,降低java维护 2010-05-27 16:18 咖啡妆
对一般的系统有可能可以,但是业务复杂的话 不太好办,我的sql语句也是动态构造的 不是写死的,返回值也不一样,我加一张表呢 其他的sql要关联的话都完蛋了,业务一变sql就变 代码逻辑也要变,不改不可能吧。

我觉得封装一些非业务相关组件还是不错的。
  回复  更多评论
  

# re: 改进架构,实现动态数据源,降低java维护 2010-05-27 16:22 深蓝色心情
@咖啡妆

不是说动态拼接SQL,而是指动态提取SQL。SQL都存储在外部,如文件中或数据库中,修改sql的话只需要修改外部资源,不用改动代码。

  回复  更多评论
  

# re: 改进架构,实现动态数据源,降低java维护 2010-05-27 19:36 mr right
对于大部分的产品和项目来说,页面变化是非常头痛的事情。每次小功能上线,新客户到来,都需要进行定制改造,不断的开发维护。每次开发一方面要改动页面,一方面要改动服务器代码,然后部署。而借助动态数据源,可以不用开发后端应用,直接完成功能开发。
  回复  更多评论
  

# re: 改进架构,实现动态数据源,降低java维护 2010-05-28 13:48 淘宝女装
士大夫就看电视  回复  更多评论
  

# re: 改进架构,实现动态数据源,降低java维护 2010-05-28 15:38 博百优
不是说动态拼接SQL,而是指动态提取SQL。SQL都存储在外部,如文件中或数据库中,修改sql的话只需要修改外部资源,不用改动代码。

如果我是调用sql文件呢  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: