`
easyworld
  • 浏览: 113172 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

DSE 动态SQL引擎

阅读更多

驱动力

开发人员在面对一个新业务模块时,习惯将一个业务分解为多个增、删、改、查操作以及事务操作。我们不难发现大多数业务系统使用查询操作的比重很大,而且业务系统的复杂也体现在查询操作,这些复杂往往表现在多表关联查询和动态查询条件查询上。在开源界IbatisHibernate等技术框架也对单表的动态条件查询做了很好的支持,但是对于多表的联合查询的动态条件查询还未支持,因此DSE的概念产生。SQL引擎接受页面的查询参数,根据SQL模板的去自动匹配并最终生成SQL语句。

DSE 组件架构

        DSE 机构图

1.      View

WebView交互组件,主要处理从View层传递到DSE引擎时的不匹配性。View采纳了OGNL方案。并且在OGNL的基础上,构建了OGNLValueStack的机制,从而比较完美的解决了数据流转中的不匹配性。

2.      SQL build

根据SQL 模板和页面的请求条件动态生成SQL语句。

3.      SQL Execute 

根据SQL build组件生产的SQL语句,然后根据前台页面查询条件对应类型匹配变量,并使用JDBC 的绑定变量API去 执行SQL

4.      Result

处理放回结果,并发给ServerContext

5.      Reader

读取SQL模板中的信息,将实例化的SQL模板放入 Context DSE中。

6.      SQL Template

SQL模板是动态SQL组装SQL预警的根据,SQL模板包含:基础SQL模板、条件类型配置信息两部分信息。

7.      Context DSE

存储SQL 模板信息。在DynamicSqlEngine启动时,将SQL模板存储在Context DSE 中。

8.      DynamicSqlEngine

DynamicSqlEngine 组件是整个引擎的灵魂,负责各个组件的调度,同时负责整个引擎日志记录和异常处理功能。下面是DynamicSqlEngine 引擎的工作原理:WebContext启动是,调用Reader组件读取SQLTemplate,并加载到Context中;当页面有查询请求后,由View组件封装数据,DSE组装动态组装SQL;组装完成后交给SE组件去执行;最后将SE结构给Result组件,放回给页面(Servlet Context;View 获取业务熟悉,并将页面属性映射到 Context 中。

特性

1.      动态构造sql条件语句,提供sql拼接与使用占位符两种方式

2.      采用绑定变量的形式

3.      数据类型的修饰

4.      SQL注入攻击的防范

 

项目详细发布地址:

http://code.google.com/p/worldeasy/

 

这是我的关于动态SQL引擎的设计思路,请大家给些建议。目前代码正在完善中,更多的请关注google code 的进度

备注:

1.      DSE

2.      动态条件查询:查询的条件是变化的。

 

 

  • 大小: 17.3 KB
0
2
分享到:
评论

相关推荐

    迅软DSE企业版V6防泄密系统

    迅软DSE企业版V6防泄密系统是一款专门针对企业数据安全的解决方案,旨在保护企业内部敏感信息不被非法泄露。该系统的核心功能包括文档加密、数据防泄漏以及文档安全策略的实施,以确保企业在日常运营中的信息安全。 ...

    dse_轨迹规划_DSE_

    DSE,全称为Dynamic System Estimation(动态系统估计),通常被用作控制算法的一部分,用于优化机器人的运动轨迹,确保其在执行任务时能够精确、高效且安全。在这个场景中,DSE 被应用于轨迹规划,旨在实现研磨过程...

    绕过PG和DSE的代码

    标题中的“绕过PG和DSE的代码”指的是在计算机安全领域中,如何规避Windows操作系统中的PatchGuard(PG)和Driver Signature Enforcement(DSE)这两项安全机制的技术。这些机制是为了防止恶意软件篡改系统核心组件...

    02_时序优化工具DSE1

    02_时序优化工具DSE1

    香港dse數學幾何關係.pdf

    在探讨“香港dse數學幾何關係.pdf”文档中所呈现的内容时,我们可以从高中数学(必修部分)的角度,讨论其中涉及到的数学知识点。 首先,文档中提到的“利用數學關係作描述”,在解题技巧方面,强调了建立数学公式...

    Triton:Triton是动态二进制分析(DBA)框架。 它提供了内部组件,例如动态符号执行(DSE)引擎,动态异味引擎,x86,x86-64,ARM32和AArch64指令集体系结构(ISA)的AST表示,SMT简化传递,SMT求解器界面以及最后但并非最不重要的是,Python绑定

    它提供了内部组件,例如动态符号执行(DSE)引擎,动态污点引擎, x86 , x86-64 , ARM32和AArch64指令集体系结构(ISA)的AST表示, SMT简化过程, SMT求解器接口以及最后但并非最不重要的是Python bindings 。...

    linux命令.DSE

    - `top`: 动态显示运行中的进程状态。 - `kill`: 发送信号给进程。例如:`kill -9 PID`可以强制终止指定PID的进程。 ##### 2.5 搜索文件 - `find`: 在指定目录下搜索文件或目录。例如:`find /home/user -name "*....

    DSE Design Space Exploration 笔记.md

    DSE Design Space Exploration 笔记.md

    MotorCtr_DSE.rar电机仿真sinulimk基于动态转速估计

    本压缩包“MotorCtr_DSE.rar”提供的资料是关于电机仿真,特别是利用Sinulink软件进行动态转速估计的一个实例。Sinulink是MATLAB软件中的一个模块,专门用于创建实时控制系统的仿真和实施。它结合了Simulink的模型化...

    cpp-EfiGuard实现在启动时禁用PatchGuard和DSE

    在IT领域,尤其是系统安全和恶意软件防御方面,"cpp-EfiGuard实现在启动时禁用PatchGuard和DSE"这一主题涉及了操作系统底层的安全机制和逆向工程。让我们深入探讨一下这两个关键概念。 1. **PatchGuard**: Patch...

    DSE_drone4.rar_3d_DSE—_MATLAB 四旋翼_四旋翼 模拟_四旋翼参数

    一个带有GUI、Simulink 3D模拟的四旋翼仿真程序。控制参数、目标点可调。使用时先打开simulink模型,再运行GUI_Config.m即可

    dse加密所需jar包

    DSE(Data Security Encryption)加密是一种广泛应用的数据加密方式,尤其在存储和传输敏感信息时。在这个场景中,我们关注的是使用DES(Data Encryption Standard)加密算法,并且需要一个特定的Java库——`sunjce_...

    英国约克大学dse专业的课表

    根据给定文件中的标题“英国约克大学dse专业的课表”及描述“关于york大学的des专业的课程,看看国外需要学些什么,这样可以提高自己的水平”,我们可以了解到该文件主要涉及约克大学数字系统工程(Digital Systems ...

    HSA DSE文献背景

    ### HSA DSE文献背景分析 #### 异构系统架构设计空间探索(HSA DSE) 在当前计算领域,异构多核系统因其高效能而逐渐成为主流趋势之一。该趋势背景下,**异构系统架构(HSA)设计空间探索(DSE)**成为连接学术界与...

    WindowsD, 禁用DSE和 WinTcb ( 不破坏 DRM ).zip

    WindowsD, 禁用DSE和 WinTcb ( 不破坏 DRM ) WindowsD - 修复损坏的Windows非驱动程序将不会加载,进程是 unkillable,注册表不能被编辑。 风是 3rd 方"越狱",所以管理员可以删除现代 Windows 版本中引入的一些mal...

    Python库 | dse_driver-2.5.0-cp27-cp27m-manylinux1_i686.whl

    资源分类:Python库 所属语言:Python 使用前提:需要解压 资源全名:dse_driver-2.5.0-cp27-cp27m-manylinux1_i686.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    fimg_3dse_shaders.pdf

    ### fimg_3dse_shaders.pdf:三星S3C6410 3D OpenGL Shader 架构解析 #### 概述 本文档详细介绍了三星S3C6410芯片内置的顶点和像素着色器单元的内部架构。三星S3C6410是一款高度集成的应用处理器,广泛应用于移动...

Global site tag (gtag.js) - Google Analytics