一种持久层开发框架配置sql的方法和装置的制造方法

文档序号:10654209阅读:179来源:国知局
一种持久层开发框架配置sql的方法和装置的制造方法
【专利摘要】本发明提供一种持久层开发框架配置SQL的方法和装置,能够降低开发框架的复杂度,大大提高项目的开发效率,节约开发成本,同时降低了维护成本。本发明的持久层开发框架配置SQL的方法包括:接收客户端发来的获取可执行SQL对象的请求,所述请求包括SQL对象标识;根据所述SQL对象标识获取SQL对象;根据所述SQL对象构造可执行SQL对象;将构造的所述可执行SQL对象返回所述客户端。
【专利说明】
-种持久层开发框架配置SQL的方法和装置
技术领域
[0001] 本发明设及计算机和计算机软件技术领域,特别地设及一种持久层开发框架配置 S化的方法和装置。
【背景技术】
[0002] 目前,数据库开发人员在编写数据库应用程序时,使用较多的开源持久层开发框 架例如化bernate或Mybatis等。
[0003] H化ernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级 的对象封装,可W使用对象编程思维来操纵数据库。其优点是化bernate作为数据持久层框 架,在进行一些简单对象的增、删、查、改数据库操作时非常便利,但缺点是没有强大的动态 S化配置功能,例如根据运行时条件生成动态的SQL。
[0004] Mybatis是一个基于SQL映射支持化va和.肥T的持久层框架,拥有灵活的SQL配置 功能,但是配置过于复杂,简单的数据库操作也没有化bernate简单。例如:MyBatis中,当查 询条件过多时,S化配置异常复杂,回出现大量的逻辑判断,如下面列出的代码中所有的if 部分:
[00C
[0006;
[0007]同样,MyBat i S中返回值类型
(re SUI tMap)也需要在配置文件中进行设置,且设置 过于复杂,如下:
[000引
[0009
[0010]由上述可W看出,MyBatiS在简单数据库操作时过于复杂,S化动态生产不够简洁, 具体缺点主要如下:
[0011 ] 1、现有技术方案MyBatis为每个业务实体的增删查改SQL操作都写一堆SQL配置文 件,工作量巨大,且需运行时要为每个S化设置判断条件,当条件较多时较为繁琐;
[0012] 2、查询结果的返回值需逐项设置映射关系,较为复杂,开发效率低;
[0013] 3、不支持S化中设置变量,不能灵活解决运行时切换S化需求,如分表操作;
[0014] 4、不支持开发环境配置更新后动态加载,需要频繁重启服务器,浪费时间。
[0015] 综上可知,基于对象关系映射框架化bernate和基于S化映射框架的持久层框架 MyBatis都有各自的优缺点,不能够很好的满足实际开发的需要,在开发效率和配置灵活性 方面都需要提升。

【发明内容】

[0016] 有鉴于此,本发明提供一种持久层开发框架配置S化的方法和装置,能够降低开发 框架的复杂度,大大提高项目的开发效率,节约开发成本,同时降低了维护成本。
[0017] 为实现上述目的,根据本发明的一个方面,提供了一种持久层开发框架配置S化的 方法。
[0018] -种持久层开发框架配置SQL的方法,包括:接收客户端发来的获取可执行SQL对 象的请求,所述请求包括S化对象标识;根据所述S化对象标识获取SQL对象;根据所述S化对 象构造可执行S化对象;将构造的所述可执行S化对象返回所述客户端。
[0019]可选地,所述请求还包括:S化参数和SQL变量集合。
[0020] 可选地,获取SQL对象包括:尝试从缓存中查找所述S化对象,若所述缓存中存在所 述SQL对象,则从该缓存读取所述S化对象,否则,加载并解析SQL配置文件,W获取SQL对象 集合,并将所述SQL对象集合中包含的SQL对象同步至所述缓存中,然后从所述缓存中获取 所述S化对象。
[0021] 可选地,所述SQL配置文件包括:S化语句的类型、S化对象对应的SQL文件及SQL语 句。
[0022] 可选地,所述S化语句的类型包括S化语句和册L语句。
[0023] 可选地,还包括:获取所述5(^1^对象后,检查对应的591配置文件的时间戳是否更 新,如果已更新,则重新加载并解析更新后的S化配置文件,然后将解析得到的SQL对象更新 至所述缓存中。
[0024] 可选地,据所述S化对象构造可执行S化对象包括:循环处理所述S化对象中存在的 所有变量,将变量赋值为运行时的实际值;W及剔除条件值为空的过滤条件。
[0025] 根据本发明的另一方面,提供了一种持久层开发框架配置S化的装置。
[0026] -种持久层开发框架配置SQL的装置,包括:请求接收模块,用于接收客户端发来 的获取可执行5(^1对象的请求,所述请求包括591对象标识;对象获取模块,用于根据所述 S化对象标识获取SQL对象;对象构造模块,用于根据所述SQL对象构造可执行S化对象;结果 返回模块,用于将构造的所述可执行S化对象返回所述客户端。
[0027] 可选地,所述请求还包括:S化参数和SQL变量集合。
[0028] 可选地,所述对象获取模块还用于:尝试从缓存中查找所述SQL对象,若所述缓存 中存在所述SQL对象,则从该缓存读取所述SQL对象,否则,加载并解析S化配置文件,W获取 S化对象集合,并将所述SQL对象集合中包含的SQL对象同步至所述缓存中,然后从所述缓存 中获取所述S化对象。
[0029] 可选地,所述SQL配置文件包括:S化语句的类型、S化对象对应的SQL文件及SQL语 句。
[0030] 可选地,所述S化语句的类型包括S化语句和册L语句。
[0031 ]可选地,还包括缓存更新模块,用于:获取所述591对象后,检查对应的5(^1配置文 件的时间戳是否更新,如果已更新,则重新加载并解析更新后的S化配置文件,然后将解析 得到的S化对象更新至所述缓存中。
[0032] 可选地,所述对象构造模块还用于:循环处理所述SQL对象中存在的所有变量,将 变量赋值为运行时的实际值;W及剔除条件值为空的过滤条件。
[0033] 根据本发明的又一方面,提供了一种持久层开发框架配置S化的装置。
[0034] -种持久层开发框架配置SQL的装置,包括:存储器和处理器,其中,所述存储器存 储指令;所述处理器执行所述指令用于:接收客户端发来的获取可执行SQL对象的请求,所 述请求包括SQL对象标识;根据所述SQL对象标识获取SQL对象;根据所述SQL对象构造可执 行S化对象;将构造的所述可执行S化对象返回所述客户端。
[0035] 根据本发明的技术方案,通过根据SQL配置文件对业务请求进行动态解析,并构造 可执行的SQL对象,可实现将复杂业务场景的数据操作请求进行灵活配置,可简化动态的 S化配置,在开发环境下可W动态加载更新,从而降低了开发工作量,节约了开发时间,提高 了开发效率,同时降低了维护成本。
【附图说明】
[0036] 附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
[0037] 图1是根据本发明实施例的持久层开发框架配置S化的方法的主要步骤示意图;
[0038] 图2是本发明实施例的系统架构图;
[0039] 图3是本发明实施例的执行流程图;
[0040] 图4是根据本发明一个实施例的持久层开发框架配置SQL的装置的主要模块示意 图;
[0041] 图5是根据本发明另一实施例的持久层开发框架配置SQL的装置的主要模块示意 图。
【具体实施方式】
[0042] W下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种 细节W助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识 到,可W对运里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同 样,为了清楚和简明,W下的描述中省略了对公知功能和结构的描述。
[0043] 针对现有技术中Hibernate和MyBatis的缺点,本发明在Hibernate的基础上,保留 了化bernate对简单增删查改操作的便利,增加了灵活高效的S化配置方案来简化S化配置, 支持复杂业务场景数据操作,开发环境动态加载更新,从而可降低开发工作量,节约开发时 间,提高开发效率。根据不同的使用场景,其主要优点表现在:
[0044] 1、简化动态S化配置,降低复杂度和学习曲线;
[0045] 2、支持S化中设置变量值,动态替换,灵活支持大数据量分表等复杂业务操作;
[0046] 3、去除返回值复杂配置,根据运行时指定返回参数,动态装箱;
[0047] 4、支持开发环境频繁修改配置文件时动态加载,提高开发效率。
[0048] 下面是本发明技术方案的详细内容。
[0049] 图1是根据本发明实施例的持久层开发框架配置S化的方法的主要步骤示意图。如 图1所示,本发明的持久层开发框架配置S化的方法主要包括如下的步骤Sll至步骤S14。
[0050] 步骤Sll:接收客户端发来的获取可执行SGlL对象的请求,该请求包括SGlL对象标 识;
[0051 ]步骤Sl 2:根据S化对象标识获取S化对象;
[0052] 步骤S13:根据S化对象构造可执行S化对象;
[0053] 步骤S14:将构造的可执行S化对象返回客户端。
[0054] 本发明中,所述请求还可W包括:S化参数和S化变量集合。
[0055] 根据本发明实施例的技术方案,步骤512中获取5(^1对象具体可^包括:尝试从缓 存中查找所述SQL对象,若所述缓存中存在所述SQL对象,则从该缓存读取所述SQL对象,否 贝IJ,加载并解析S化配置文件,W获取S化对象集合,并将所述S化对象集合中包含的S化对象 同步至所述缓存中,然后从所述缓存中获取所述S化对象。
[0056] 其中,所述S化配置文件包括:S化语句的类型、S化对象对应的SQL文件及SQL语句。 并且,所述S化语句的类型包括S化语句和册L语句。
[0057] 另外,本发明的持久层开发框架配置SQL的方法还可W包括:获取所述S化对象后, 检查对应的SQL配置文件的时间戳是否更新,如果已更新,则重新加载并解析更新后的SQL 配置文件,然后将解析得到的S化对象更新至所述缓存中。
[0058] 在步骤S13中,根据所述S化对象构造可执行SQL对象具体可W包括:循环处理所述 S化对象中存在的所有变量,将变量赋值为运行时的实际值;W及剔除条件值为空的过滤条 件。
[0059] 图2是本发明实施例的系统架构图。如图2所示,MVC模型中的控制器controlIer负 责解析用户的输入信息,并将之变换处理后传入通用数据访问组件Service,业务逻辑服务 层(ServiCe)在处理完业务逻辑后,访问数据库DB的所有操作交由CommonDao执行即可。 CommonDao类作为数据库基类,里面封装有通用的方法,如增、删、改、查、分页等。
[0060] 如图2所示,本发明的持久层开发框架配置SQL的系统的静态组件主要包括SQL管 理器、S化可执行对象构造器、配置文件管理器、配置文件解析器和S化对象。
[0061] 其中,S化管理器主要用于根据SQL语句标识SQL IDW获取可执行的S化对象,并将 配置文件解析器解析后得到的S化对象集合缓存。
[0062] S化可执行对象构造器用于动态解析S化对象,W构造可执行的S化对象,例如可通 过替换SQL对象中的变量、剔除不合法的查询条件等操作,最终得到可执行的SQL对象。S化 可执行对象可包括S化语句、S化语句的参数、W及执行结果的自动装配等。
[0063] 配置文件管理器用于查找匹配所有的S化配置文件。
[0064] 配置文件解析器用于根据S化配置文件,解析出所有的S化对象。
[0065] S化对象是配置文件中具有唯一标识的S化语句,包含S化语句的类型(本发明可支 持S化语句和册L语句)、S化对象对应的SQL文件和S化语句。
[0066] 下面将结合图3介绍本发明的持久层开发框架配置S化的系统的执行过程。
[0067] 图3是本发明实施例的执行流程图。如图3所示,客户端发送请求给SQL管理器,该 请求中包含S化语句的标识SQL ID、指定的S化参数及SQL变量集合(可选参数),W请求获取 可执行S化对象(步骤S31)。其中,指定的SQL ID、S化参数及SQL变量集合可参见后面的不同 使用场景中所设及的内容。
[0068] S化管理器接收到客户端发来的请求后,将执行从缓存中读取S化对象(步骤S32)。 在执行该步骤时,将根据缓存中是否存在需要的缓存对象的不同情况分别处理。若缓存中 存在SQL对象,则直接读取(步骤S321)即可;若缓存中不存在SQL对象(可包括两种情况:一 是系统第一次启动,缓存还没有初始化;二是缓存中没有需要的S化对象),则执行W下步骤 (步骤 S322):
[0069] 步骤S3221: S化管理器请求重新加载S化配置文件;
[0070] 步骤S3222:配置文件管理器返回S化配置文件集合;
[0071] 步骤S3223: S化管理器调用配置文件解析器来解析S化配置文件;
[0072] 步骤S3224:配置文件解析器返回SQL对象集合,所述SQL对象集合是由SQL配置文 件解析得到的;
[0073] 步骤S3225:S化管理器将S化对象同步至缓存,并从缓存中获取需要的S化对象。
[0074] 从缓存中获取到需要的5(^1对象后,若在开发模式下,则检查对应的591配置文件 的时间戳(S化配置文件的最后更新时间)是否更新。若SQL对应的配置文件更新,则重复执 行步骤S32(步骤S33),亦即,需要重新加载并解析S化配置文件,并将解析后的SQL对象更新 至缓存,然后获取需要的S化对象。另外,若本发明的程序运行于生产环境,则只需在系统启 动时加载一次配置文件即可。
[0075] 之后,根据从缓存中获取的S化对象构造可执行的S化对象。S化管理器通过调用可 执行对象构造器,请求构造可执行S化对象(步骤S34)。
[0076] 可执行对象构造器根据S化管理器的请求,执行SQL对象处理(步骤S35),主要处理 过程例如可W包括:循环处理SQL中所有存在的变量,包括嵌套变量等,将变量处理成运行 时的实际值,也就是变量参数赋值;W及,剔除条件值为空的过滤条件,等等。对SQL对象处 理完成后,将返回可执行S化对象给S化管理器(步骤S36)。
[0077] 最后,S化管理器返回可执行S化对象给客户端(步骤S37)。
[0078] 根据如上所述的步骤S31至步骤S37,即可实现灵活、动态地配置SQL。使用S化动态 配置,可W大大降低SQL配置的复杂度,简化开发代码,提高开发效率,下面具体W查询、更 新和删除等几种常用场景为例介绍本发明的实施过程。
[0079] 场景一:普通查询场景
[0080] 查询S化可配置如下:
[0081;
[0082]
[0083] 上面代码中的查询条件部分,与现有技术相比,减少了约2/3的代码量,另外,本发 明中也不需要为每个查询返回结果进行配置(减少了 16行),直接在程序运行时指定返回类 型(如下面代码中的"AttendanceTimeSetting. class")即可,Java代码可不例如下:
[0084]
[0085] 其中,"get_use;r_menu"为SQL ID,"paras"为指定的SQL参数。
[0086] 场景二:更新和删除场景
[0087] 更新、删除操作的配置方法与普通查询方法相似,只要配置好化date或Delete SQL,传入相应参数即可,Java代码可示例如下:
[008引
[0089]
[0090]
[0091 ]其中,"delete_sysacl_by_funcicT为SQL ID, "paras"为指定的SQL参数。
[0092] 场景S: In集合场景
[0093] 在数据库查询时经常会使用到in的情况,使用in时,Java传递的参数必须为对象 数组或集合Col Iect ion。
[0094] 化va代码可参考如下:
[0095]
[0096] 其中,orgArray 为字符串数组 Stringli ]。
[0097] S化配置可参考如下:
[009引
[0099] 其中,"delete_use;ro;rg_by_userAndO;rgs"为SQL ID, "paras"为指定的SQL参数。
[0100] 场景四:S化变量场景
[0101] 在开发过程中,可能需要根据不同的条件,使用不同的S化结构的情况。
[0102] 如当数据量较大时,往期数据存储历史表,当月数据存储在当前表,业务操作时根 据条件可能需要查询历史表或当前表,则此时可W使用变量处理,可参考S化配置如下:
[0103;
[0104]
[0105] 其中,${fo;rmat}和${orde;rType}为变量。
[0106] 化va代码可参考如下:
[0107]
[010 引
[0109] 其中,"delete_use;rorg_by_userAndO;rgs"为SQL ID,"paras"为指定的SQL参数, "varfaras"是S化变量集合。
[0110] 此示例可支持大数据量的分表操作,例如:按照12个月将数据分割,根据月份查询 不同的数据库表,W提高业务处理性能。
[0111] 由W上几种使用场景的化va代码和SQL配置可W看出,通过动态配置SQL,可W大 大降低S化配置的复杂度,简化开发代码,从而提高了开发和运行效率。
[0112] 图4是根据本发明一个实施例的持久层开发框架配置SQL的装置的主要模块示意 图。如图4所示,本发明的持久层开发框架配置S化的装置40主要包括请求接收模块41、对象 获取模块42、对象构造模块43和结果返回模块44。
[0113] 请求接收模块41用于接收客户端发来的获取可执行SQL对象的请求,所述请求包 括S化对象标识;对象获取模块42用于根据所述S化对象标识获取SQL对象;对象构造模块43 用于根据所述SQL对象构造可执行SQL对象;结果返回模块44用于将构造的所述可执行SQL 对象返回所述客户端。
[0114] 其中,所述请求还包括:S化参数和S化变量集合。
[0115] 对象获取模块42还可W用于尝试从缓存中查找所述SQL对象,若所述缓存中存在 所述SQL对象,则从该缓存读取所述SQL对象,否则,加载并解析SQL配置文件,W获取SQL对 象集合,并将所述SQL对象集合中包含的SQL对象同步至所述缓存中,然后从所述缓存中获 取所述S化对象。
[0116] 其中,所述S化配置文件包括:S化语句的类型、S化对象对应的SQL文件及SQL语句。 并且,所述S化语句的类型包括S化语句和册L语句。
[0117] 另外,本发明的持久层开发框架配置SQL的装置40还可W包括缓存更新模块,用于 获取所述S化对象后,检查对应的S化配置文件的时间戳是否更新,如果已更新,则重新加载 并解析更新后的S化配置文件,然后将解析得到的S化对象更新至所述缓存中。
[0118] 对象构造模块43还可W用于循环处理所述SQL对象中存在的所有变量,将变量赋 值为运行时的实际值;W及剔除条件值为空的过滤条件。
[0119] 图5是根据本发明另一实施例的持久层开发框架配置SQL的装置的主要模块示意 图。如图5所示,本发明的持久层开发框架配置S化的装置50主要包括存储器51和处理器52。
[0120] 其中,存储器51存储指令;处理器52执行所述指令用于:接收客户端发来的获取可 执行SQL对象的请求,所述请求包括SQL对象标识;根据所述S化对象标识获取S化对象;根据 所述S化对象构造可执行S化对象;将构造的所述可执行S化对象返回所述客户端。
[0121] 根据本发明实施例的技术方案,通过根据S化配置文件对业务请求进行动态解析, 并构造可执行的S化对象,可实现将复杂业务场景的数据操作请求进行灵活配置,可简化动 态的S化配置,在开发环境下可W动态加载更新,从而降低了开发工作量,节约了开发时间, 提高了开发效率,同时降低了维护成本。
[0122] 根据不同的使用场景,本发明技术方案的有益效果主要体现在:
[0123] 1、简化动态S化配置,降低复杂度和学习曲线;
[0124] 2、支持S化中设置变量值,动态替换,灵活支持大数据量分表等复杂业务操作;
[0125] 3、去除返回值复杂配置,根据运行时指定返回参数,动态装箱;
[0126] 4、支持开发环境频繁修改配置文件时动态加载,无需重启服务器,节约开发时间, 提高开发效率。
[0127] 上述【具体实施方式】,并不构成对本发明保护范围的限制。本领域技术人员应该明 白的是,取决于设计要求和其他因素,可W发生各种各样的修改、组合、子组合和替代。任何 在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围 之内。
【主权项】
1. 一种持久层开发框架配置SQL的方法,其特征在于,包括: 接收客户端发来的获取可执行SQL对象的请求,所述请求包括SQL对象标识; 根据所述SQL对象标识获取SQL对象; 根据所述SQL对象构造可执行SQL对象; 将构造的所述可执行SQL对象返回所述客户端。2. 根据权利要求1所述的方法,其特征在于,所述请求还包括:SQL参数和SQL变量集合。3. 根据权利要求1所述的方法,其特征在于,获取SQL对象包括: 尝试从缓存中查找所述SQL对象, 若所述缓存中存在所述SQL对象,则从该缓存读取所述SQL对象, 否则,加载并解析SQL配置文件,以获取SQL对象集合,并将所述SQL对象集合中包含的 SQL对象同步至所述缓存中,然后从所述缓存中获取所述SQL对象。4. 根据权利要求3所述的方法,其特征在于,所述SQL配置文件包括: SQL语句的类型、SQL对象对应的SQL文件及SQL语句。5. 根据权利要求4所述的方法,其特征在于,所述SQL语句的类型包括SQL语句和HQL语 句。6. 根据权利要求3所述的方法,其特征在于,还包括: 获取所述SQL对象后,检查对应的SQL配置文件的时间戳是否更新,如果已更新,则重新 加载并解析更新后的SQL配置文件,然后将解析得到的SQL对象更新至所述缓存中。7. 根据权利要求1所述的方法,其特征在于,根据所述SQL对象构造可执行SQL对象包 括: 循环处理所述SQL对象中存在的所有变量,将变量赋值为运行时的实际值;以及 剔除条件值为空的过滤条件。8. -种持久层开发框架配置SQL的装置,其特征在于,包括: 请求接收模块,用于接收客户端发来的获取可执行SQL对象的请求,所述请求包括SQL 对象标识; 对象获取模块,用于根据所述SQL对象标识获取SQL对象; 对象构造模块,用于根据所述SQL对象构造可执行SQL对象; 结果返回模块,用于将构造的所述可执行SQL对象返回所述客户端。9. 根据权利要求8所述的装置,其特征在于,所述请求还包括:SQL参数和SQL变量集合。10. 根据权利要求8所述的装置,其特征在于,所述对象获取模块还用于: 尝试从缓存中查找所述SQL对象, 若所述缓存中存在所述SQL对象,则从该缓存读取所述SQL对象, 否则,加载并解析SQL配置文件,以获取SQL对象集合,并将所述SQL对象集合中包含的 SQL对象同步至所述缓存中,然后从所述缓存中获取所述SQL对象。11. 根据权利要求10所述的装置,其特征在于,所述SQL配置文件包括: SQL语句的类型、SQL对象对应的SQL文件及SQL语句。12. 根据权利要求11所述的装置,其特征在于,所述SQL语句的类型包括SQL语句和HQL 语句。13. 根据权利要求10所述的装置,其特征在于,还包括缓存更新模块,用于: 获取所述SQL对象后,检查对应的SQL配置文件的时间戳是否更新,如果已更新,则重新 加载并解析更新后的SQL配置文件,然后将解析得到的SQL对象更新至所述缓存中。14. 根据权利要求8所述的装置,其特征在于,所述对象构造模块还用于: 循环处理所述SQL对象中存在的所有变量,将变量赋值为运行时的实际值;以及 剔除条件值为空的过滤条件。15. -种持久层开发框架配置SQL的装置,其特征在于,包括: 存储器和处理器,其中, 所述存储器存储指令; 所述处理器执行所述指令用于: 接收客户端发来的获取可执行SQL对象的请求,所述请求包括SQL对象标识; 根据所述SQL对象标识获取SQL对象; 根据所述SQL对象构造可执行SQL对象; 将构造的所述可执行SQL对象返回所述客户端。
【文档编号】G06F9/445GK106020847SQ201610392727
【公开日】2016年10月12日
【申请日】2016年6月6日
【发明人】陈克林
【申请人】北京京东尚科信息技术有限公司, 北京京东世纪贸易有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1