改进架构,实现动态数据源,减少java维护
怎样不用写java代码来完毕开发?
对于大部分的产品和项目来说。页面变化是很头痛的事情。每次小功能上线,新客户到来,都须要进行定制改造,不断的开发维护。每次开发一方面要修改页面,一方面要修改server代码,然后部署。而借助动态数据源。能够不用开发后端应用,直接完毕功能开发。
新功能开发时,仅仅须要定义须要的数据格式和获取方法,如通过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. server端有一个类似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服务。依据此服务能够直接实现此功能。
优点:
实现以后。基本上后台开发就会非常稳定非常稳定了,大部分的工作仅仅是前端做页面。能够大幅度的减少开发成本。提高开发进度。
上面的实现是以上传文件来定义和管理sql,也能够通过数据库来管理。
这样管理起来更加简单。
假设使用guzz作为动态SQL提供者。能够自己主动获得命名查询,类型自己主动匹配(转成枚举类型都能够),分库。自己主动分切表。自己定义属性表等附加支持。
啧啧~~
改进架构,实现动态数据源,减少java维护相关推荐
- java 动态数据源切换,Java+Spring+MyBatis实现多数据源的动态切换
在实际的项目开发过程中我们经常会遇到一个项目需要使用多个数据源的情况,而多数据源又可分为固定多数据源和动态多数据源两种情况. 固定多数据源是指在项目中需要使用多个数据源,但数据源的个数是确定的,不会改 ...
- SpringBoot实现多数据源,动态数据源自由切换
业务场景 在开发中,可能涉及到在用户的业务中要去查询对应订单的数据,而用户和订单又是分处于不同的数据库的,这样的业务该怎么处理呢? 这种就是多数据源的场景,随着业务量的增大,其实这种情况还是经常能遇到 ...
- Java 动态数据源配置
目录 一.动态数据源介绍 1. AbstractRoutingDataSource 2. 实现逻辑 二.源代码 1. 修改配置文件类 2. 创建数据源枚举 3. 数据源切换处理 4. 继承Abstra ...
- SpringBoot2/SpringBoot/Java动态数据源配置、动态连接池配置、多数据源负载均衡
Java动态数据源配置.动态连接池配置.多数据源负载均衡 大家好,今天给大家推荐一个自产的连接池插件.废话不多说,本文接口分为以下主题: 1. 插件开发背景: 2. 插件提供的能力: 3. 插件的使用 ...
- java多个数据库数据进行访问_通过Spring Boot配置动态数据源访问多个数据库的实现代码...
之前写过一篇博客<Spring+Mybatis+Mysql搭建分布式数据库访问框架>描述如何通过Spring+Mybatis配置动态数据源访问多个数据库.但是之前的方案有一些限制(原博客中 ...
- java 数据源调用_实战分享: Spring boot 调用之间实现动态数据源
需求: 根据项目部署在不同的域名,在同一套系统下,分别访问不同的数据库 (当然在看别人帖子的时候,也发现了不同接口访问不同数据源问题,就是分库动态数据源需求了,其实实现都一样) 业务描述: 部署的时候 ...
- 【Java从0到架构师】Zookeeper 应用 - Java 客户端操作、服务器动态感知、分布式锁业务处理
分布式基石 Zookeeper 框架全面剖析 Java 客户端操作 Java 客户端 API 服务器的动态感知 服务注册 服务发现 分布式锁业务处理 单机环境(一个虚拟机中) 分布式环境_同名节点 分 ...
- 【Java多数据源实现教程】实现动态数据源、多数据源切换方式
前言 本文为 [Java多数据源实现教程] 相关知识,由于自己最近在做导师的项目的时候需要使用这种技术,于是自学了相关技术原理与实现,并将其整理如下,具体包含:多数据源的典型使用场景(包含业务复杂场景 ...
- Java 阿里巴巴数据源_阿里P7教你如何使用 Spring 配置动态数据源实现读写分离
最近搭建的一个项目需要实现数据源的读写分离,在这里将代码进行分享,以供参考. 关键词:DataSource .AbstractRoutingDataSource.AOP 首先是配置数据源 //配置省略 ...
最新文章
- Xilinx IP核专题之PLL IP核介绍(Spartan-6)
- LNK1146: 没有用选项“/LIBPATH:”指定的参数
- Android 滑动显示下一层界面
- debug pricing calculation rfc call
- JMeter响应断言详解
- feign直接走熔断_SpringCloud微服务面试必问:Hystrix 服务降级、熔断
- android 7.1 支持哪些 cpu,锤子新机坚果Pro配置放出:骁龙626处理器、Android 7.1.1系统...
- 【论坛项目】简单的论坛小项目-麻雀虽小,五脏俱全
- 关于项目一直updating indexes不停的解决方案
- 死磕ppt--图片处理
- 如何将m3u8格式转成MP4以及可播放格式
- 处理大数据的关键技术及应用
- 本土程序员杀进硅谷的第一步---突破英语瓶颈
- 图像识别技术,目前主要应用于哪些领域?
- 车联网目前在我国主要的应用市场
- POJO、DO、DTO、AO、BO、VO、JB、DAO、EJB
- 记录一下自己2018年秋招的情况
- Netty 学习 之(1)Netty是什么
- MediaPlayer的使用
- 2位专家耗时2年打造,西瓜书机器学习公式详解,都在这里了!(文末留言赠书)...
热门文章
- golang+数据库定时任务
- Mariadb的安装与配置
- IntelliJ IDEA 12创建Maven管理的Java Web项目(图解)
- Image、Byte[]、Bitmap相互转换
- 怎样让友情链接更加有效果
- xp上使用文件夹的共享和安全
- 【清单】值得「等待」的12个指示加载状态的 js 库
- php 文件名汉字utf8,php utf8编码上传中文文件名出现乱码_PHP教程
- 编写python程序、计算账户余额_小明有20w存款存在余额宝中,按余额宝年收益为3.35%计算,用Python编写程序计算,多少年后小明的存款达到30w?...
- ConcurrentHashMap的源码分析-tabAt