驱动力
开发人员在面对一个新业务模块时,习惯将一个业务分解为多个增、删、改、查操作以及事务操作。我们不难发现大多数业务系统使用查询操作的比重很大,而且业务系统的复杂也体现在查询操作,这些复杂往往表现在多表关联查询和动态查询条件查询上。在开源界Ibatis和Hibernate等技术框架也对单表的动态条件查询做了很好的支持,但是对于多表的联合查询的动态条件查询还未支持,因此DSE的概念产生。SQL引擎接受页面的查询参数,根据SQL模板的去自动匹配并最终生成SQL语句。
DSE 组件架构
1. View
与Web的View交互组件,主要处理从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. 动态条件查询:查询的条件是变化的。
相关推荐
迅软DSE企业版V6防泄密系统是一款专门针对企业数据安全的解决方案,旨在保护企业内部敏感信息不被非法泄露。该系统的核心功能包括文档加密、数据防泄漏以及文档安全策略的实施,以确保企业在日常运营中的信息安全。 ...
DSE,全称为Dynamic System Estimation(动态系统估计),通常被用作控制算法的一部分,用于优化机器人的运动轨迹,确保其在执行任务时能够精确、高效且安全。在这个场景中,DSE 被应用于轨迹规划,旨在实现研磨过程...
标题中的“绕过PG和DSE的代码”指的是在计算机安全领域中,如何规避Windows操作系统中的PatchGuard(PG)和Driver Signature Enforcement(DSE)这两项安全机制的技术。这些机制是为了防止恶意软件篡改系统核心组件...
02_时序优化工具DSE1
在探讨“香港dse數學幾何關係.pdf”文档中所呈现的内容时,我们可以从高中数学(必修部分)的角度,讨论其中涉及到的数学知识点。 首先,文档中提到的“利用數學關係作描述”,在解题技巧方面,强调了建立数学公式...
它提供了内部组件,例如动态符号执行(DSE)引擎,动态污点引擎, x86 , x86-64 , ARM32和AArch64指令集体系结构(ISA)的AST表示, SMT简化过程, SMT求解器接口以及最后但并非最不重要的是Python bindings 。...
- `top`: 动态显示运行中的进程状态。 - `kill`: 发送信号给进程。例如:`kill -9 PID`可以强制终止指定PID的进程。 ##### 2.5 搜索文件 - `find`: 在指定目录下搜索文件或目录。例如:`find /home/user -name "*....
DSE Design Space Exploration 笔记.md
本压缩包“MotorCtr_DSE.rar”提供的资料是关于电机仿真,特别是利用Sinulink软件进行动态转速估计的一个实例。Sinulink是MATLAB软件中的一个模块,专门用于创建实时控制系统的仿真和实施。它结合了Simulink的模型化...
在IT领域,尤其是系统安全和恶意软件防御方面,"cpp-EfiGuard实现在启动时禁用PatchGuard和DSE"这一主题涉及了操作系统底层的安全机制和逆向工程。让我们深入探讨一下这两个关键概念。 1. **PatchGuard**: Patch...
一个带有GUI、Simulink 3D模拟的四旋翼仿真程序。控制参数、目标点可调。使用时先打开simulink模型,再运行GUI_Config.m即可
DSE(Data Security Encryption)加密是一种广泛应用的数据加密方式,尤其在存储和传输敏感信息时。在这个场景中,我们关注的是使用DES(Data Encryption Standard)加密算法,并且需要一个特定的Java库——`sunjce_...
根据给定文件中的标题“英国约克大学dse专业的课表”及描述“关于york大学的des专业的课程,看看国外需要学些什么,这样可以提高自己的水平”,我们可以了解到该文件主要涉及约克大学数字系统工程(Digital Systems ...
### HSA DSE文献背景分析 #### 异构系统架构设计空间探索(HSA DSE) 在当前计算领域,异构多核系统因其高效能而逐渐成为主流趋势之一。该趋势背景下,**异构系统架构(HSA)设计空间探索(DSE)**成为连接学术界与...
WindowsD, 禁用DSE和 WinTcb ( 不破坏 DRM ) WindowsD - 修复损坏的Windows非驱动程序将不会加载,进程是 unkillable,注册表不能被编辑。 风是 3rd 方"越狱",所以管理员可以删除现代 Windows 版本中引入的一些mal...
资源分类:Python库 所属语言:Python 使用前提:需要解压 资源全名:dse_driver-2.5.0-cp27-cp27m-manylinux1_i686.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
### fimg_3dse_shaders.pdf:三星S3C6410 3D OpenGL Shader 架构解析 #### 概述 本文档详细介绍了三星S3C6410芯片内置的顶点和像素着色器单元的内部架构。三星S3C6410是一款高度集成的应用处理器,广泛应用于移动...