首页> 中国专利> 一种数据库持久层装置及数据库操作方法

一种数据库持久层装置及数据库操作方法

摘要

本发明实施例提供了一种数据库持久层装置及数据操作方法,其中,该装置包括:图元域模块,用于提供图元编辑环境,并接收用户在图元编辑环境中输入的对图元形式表示的数据对象的设计指令,对用户设计的数据对象进行编译,生成对应的图元描述文件;图元代码映射与代码生成域模块,用于解析图元域模块生成的图元描述文件,生成对应的POJO以及DAO;数据库域模块,用于将生成的POJO映射成为数据库中的数据库表,以及根据生成的DAO,执行对数据库中数据库表及数据库表数据成员的操作。本发明实施例可以实现应用程序设计中持久化层POJO和DAO的代码的自动生成,这大大减少了应用程序数据库持久化层的工作量,提高了开发效率。

著录项

  • 公开/公告号CN103049251A

    专利类型发明专利

  • 公开/公告日2013-04-17

    原文格式PDF

  • 申请/专利权人 中国移动通信集团公司;

    申请/专利号CN201110314919.4

  • 发明设计人 王磊建;孔令军;刘涛;刘岩;

    申请日2011-10-17

  • 分类号G06F9/44;G06F17/30;

  • 代理机构北京同达信恒知识产权代理有限公司;

  • 代理人郭润湘

  • 地址 100032 北京市西城区金融大街29号

  • 入库时间 2024-02-19 18:33:18

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2015-10-07

    授权

    授权

  • 2013-05-15

    实质审查的生效 IPC(主分类):G06F9/44 申请日:20111017

    实质审查的生效

  • 2013-04-17

    公开

    公开

说明书

技术领域

本发明涉及移动通信技术领域,尤其涉及一种数据库持久层装置及数据操 作方法。

背景技术

在应用程序设计中,数据库持久层的架构设计经历着不断的变化。

最初的数据库持久层让上层应用直接使用类似于Java数据库连接(Java  Data Base Connection,JDBC)的接口与底层数据库通讯,如图1示,结构化 查询语言(Structured Query Language,SQL)码到处出现在业务层的程序代码 之中,这样的好处是代码执行效率很高,对于小型应用程序或者原型,这样是 可行的。而其重大缺点是业务逻辑与数据操作紧密耦合,这意味着任何的改变 (例如对某一个数据库表的一列重新命名或者是要移植到另外一种数据库系 统),都将导致业务层代码的重新编译和部署。这对于一个商业化的应用程序 来说,当然是无法接受的。

于是,如图2所示的数据库持久层的架构应运而生;在这种数据库持久层 的体系结构中,业务类的SQL语句被封装到了一个或者多个的“数据类”中, 由这些“数据类”来负责与数据库的交互动作,数据库层面的改动将不会导致 业务逻辑层发生变化。这种方法的典型代表是微软公司的ADO(ActiveX Data  Object)技术。

在数据操作层上,随着面向对象技术的日益普及和广泛使用,对象关系映 射(Object Relational Mapping,ORM)技术逐步成为数据库持久层的技术方向。 以业界主流的数据库持久层框架Hibernate为例,其架构具体表现如图3所示, 数据操作层的ORM映射模块负责将存储对象模型与关系型数据库中的表相映 射;数据操作接口模块负责将对象模型存储到底层的关系型数据库系统中;而 数据库中间件则负责以一致性的上层应用接口来屏蔽底层具体的数据库系统 差异。

传统的程序设计中关于数据库生成和使用的步骤。通常包括:

1)开发者生成数据库表;

在程序设计中,开发者需要通过数据库管理系统(DataBase Management  System,DBMS)或者是数据库设计工具(例如DBDesigner等)进行数据库表 的设计。

2)手动撰写简单Java对象(Plain Old Java Object,POJO);

如图三中所述,在数据操作层面上需要有一个ORM映射模块来进行对象 模型和RDS表之间进行映射(ORM映射模块负责将存储对象模型与关系型数 据库中的表相映射),POJO就是将会与数据库表进行映射的数据对象。下面举 一个POJO的例子如下:

3)在POJO中手动撰写Annotation或者撰写Xml配置文件;

所谓Annotation,就是上述Person代码类中以符号起头的文字行;

Entity

Table(name=″Person″)

类似于Hibernate的数据库持久化框架会读取POJO中的Annotation,或者 读取Xml配置文件,从去获得去数据库通信和数据存取动作所需要的必需信 息;

Xml配置文件的举例如下所示:

4)手动撰写POJO的数据访问对象(DataAccess Objects,DAO);

DAO类是负责进行POJO存取的代码类,它是一个接口,DAO在上层应 用与底层的数据库中间件之间进行数据的通讯,完成POJO的CRUD(包括 create,retrieve,update,and delete,常用于指数据库或者软件系统中持久层的基 本功能);一个典型的DAO声明举例如下:

5)使用POJO的DAO进行数据的存取;

上层应用使用DAO接口,实现POJO的数据存取动作。

从上面描述的步骤中可以看到,利用现有的数据库持久层的架构,程序设 计人员在进行数据库相关的开发工作中,需要做非常繁杂的工作。例如开发者 要通过一些数据库设计工作来生成数据库表,然后需要使用代码编辑工具人工 生成POJO和与之对应的Annotation或者XML配置文件,开发者还需要使用 代码编辑工具来生成存取POJO的DAO接口类。由于过程需要开发者参与到 所有的环节并进行大量的代码编写,存在设计开发者的工作量较大,设计开发 效率较低的问题。

发明内容

本发明实施例提供了一种数据库持久层生成装置及方法,用以解决使用现 有数据库持久层架构存在的设计开发者工作量较大,设计开发效率较低的问 题。

基于上述问题,本发明实施例提供的一种数据库持久层装置,包括:

图元域模块,用于提供图元编辑环境,并接收用户在图元编辑环境中输入 的对图元形式表示的数据对象的设计指令,对用户设计的数据对象进行编译, 生成对应的图元描述文件;

图元代码映射与代码生成域模块,用于解析所述图元域模块生成的图元描 述文件,生成对应的简单Java对象POJO以及数据访问对象DAO;

数据库域模块,用于将生成的POJO映射成为数据库中的数据库表,以及 根据生成的DAO,执行对数据库中数据库表及数据库表数据成员的操作。

本发明实施例提供的一种使用本发明实施例提供的上述装置进行数据库 操作的方法,包括:

接收用户在图元编辑环境中输入的对图元形式表示的数据对象的设计指 令,对用户设计的数据对象进行编译,生成对应的图元描述文件;

对生成的图元描述文件进行解析,生成对应的简单Java对象POJO以及数 据访问对象DAO;

将生成的POJO映射成为数据库中的数据库表,以及根据生成的DAO,执 行对数据库中数据库表及数据库表数据成员的操作。

本发明实施例提供的上述数据库持久层装置及数据操作方法,图元域模块 提供图元编辑环境,接收用户的设计指令,对用户设计的数据对象进行编译, 生成对应的图元描述文件;图元代码映射与代码生成域模块解析所述图元域模 块生成的图元描述文件,自动生成对应的POJO以及DAO;数据库域模块将生 成的POJO映射成为数据库中的数据库表,以及根据生成的DAO,执行对数据 库中数据库表及数据库表数据成员的操作。本发明实施例能够为数据库的开发 者提供了图元编辑环境,使得用户可以以面对对象的思维,以图元化的方式, 设计出数据对象,设计过程更为简单,更为重要的是,本发明实施例可以实现 POJO和DAO代码的自动生成,这大大减少了数据库开发者的工作量,提高了 开发效率。

附图说明

图1为现有技术中的数据库持久层结构图之一;

图2为现有技术中的数据库持久层结构图之二;

图3为现有技术中的数据库持久层结构图之三;

图4为本发明实施例提供的数据库持久层装置的结构图之一;

图5为本发明实施例提供的数据库持久层装置的结构图之二;

图6为本发明实施例提供的图元编辑环境的示意图;

图7为本发明实施例提供的生成POJO的流程图;

图8为本发明实施例提供的生成DAO的流程图;

图9为本发明实施例提供的生成SQL代码的流程图;

图10为本发明实施例提供的数据库持久层装置的结构图之三;

图11为本发明实施例提供的数据库操作方法的流程图。

具体实施方式

下面结合说明书附图,对本发明实施例提供的一种数据库持久层装置及数 据操作方法的具体实施方式进行说明。

本发明实施例提供的一种数据库持久层装置,如图4所示,具体包括:

图元域模块401,用于提供图元编辑环境,并接收用户在图元编辑环境中 输入的对图元形式表示的数据对象的设计指令,对用户设计的数据对象进行编 译,生成对应的图元描述文件;

图元代码映射与代码生成域模块402,用于解析所述图元域模块生成的图 元描述文件,生成对应的简单Java对象(POJO)以及数据访问对象(DAO);

数据库域模块403,用于将生成的POJO映射成为数据库中的数据库表, 以及根据生成的DAO,执行对数据库中数据库表及数据库表数据成员的操作。

进一步地,如图5所示,上述图元域模块401,具体包括:

图元编辑环境模块4011,用于提供用户进行数据对象设计的图元编辑环 境;

图元编译模块4012,用于由所述图元编辑环境模块调用,将用户设计的以 图元形式表示的数据对象进行编译,生成设定格式的图元描述文件。

下面对图元编译环境模块4011进行详细的说明,图元编辑环境模块为使 用者提供数据库建模的图元化设计界面,在这个编辑环境中,使用者可以进行 如下的工作:

1、根据应用的需求,对数据对象进行设计,如图6所示,在图元化设计 界面中,包含各种进行建模的工具例如选择(select)选项、ID关联选项、ISA 关联选项、属性连接选项、实体类型选项等,用户可以利用图元化将实体模型 图拖拽画在数据对象编辑界面中,并通过形象化的操作,完成建立实体的属性、 设定属性类型、建立实体关系映射图的操作。

2、将设计完成的以图元形式表示的数据对象从图元化设计界面中导出, 或者从外部导入的图元描述文件,以便在图元话设计界面中以图元形式显示。

3、图元化设计界面中包含设定代码生成的接口,使用者可以选择生成底 层的对应着不同类型的数据库的POJO以及DAO。

图元编译模块4012,负责将用户在图元编辑环境中设计的图元进行编译, 生成系统自定义的文件格式例如XML文档的格式。图元编译模块4012也会将 用户从外部导入的图元描述文件反向编译,生成对应的数据对象,并在图元编 译模块提供的图元编辑环境中以图元形式进行显示,以便用户进行进一步地编 辑和修改。

进一步地,如图5所示,上述图元代码映射与代码生成域模块402,具体 包括:

POJO对象生成模块4021,用于根据用户在图元编辑环境中输入的数据库 持久层代码生成指令中设定的关系型或非关系型数据库的规范,逐行解析所述 图元域模块生成的图元描述文件,将其转换生成对应的POJO的代码;

DAO对象生成模块4022,用于根据用户在图元编辑环境中输入的数据库 持久层代码生成指令中设定的关系型或非关系型数据库的规范,选择DAO的 模板,并根据POJO对象生成模块对该图元描述文件的解析结果,替换所选择 的DAO模板中的关键字,组装生成对应的DAO的代码。

由于现有的数据库开发框架中,程序设计人员一般不会再使用传统的SQL 语句与数据库交互,而是直接通过与POJO对应的DAO数据存取对象接口, 将POJO的数据存入数据库或者取出数据库,因此,在本发明实施例中,图元 代码映射与代码生成域模块402的主要任务为生成POJO和DAO的代码。

由于POJO代码实际上是用户在图元编辑环境设计的数据对象的代码化呈 现,因此,POJO对象生成模块4021会根据用户在图元编辑环境中发出的指令, 例如用户输入的指示生成输入符合特定的关系型或非关系型数据库规范格式 (例如JPA(Java Persistence API)、NoSqlDB等规范)代码的指令,将用户在 图元编辑环境中设计出来的数据图元对象转变成符合规范格式(例如JPA、 NoSqlDB等)的POJO。

伴随着云计算的广泛使用以及Web2.0网站的大量出现,非关系型数据库 的使用越来越普及,因此POJO对象生成模块4021除了要能够生成与关系型 数据库对应的POJO之外,也要能够生成非关系型数据库对应的POJO。

关系型数据库以及非关系型数据库对应的POJO的生成工作是自动完成 的。其实现流程如图7所示:

1、用户在图元编辑环境中按照业务需求进行数据对象的设计;

2、按照规定算法,对用户设计的图元化数据对象进行编译,生成以 XML文档为表现形式的图元描述文件;

3、根据开发者指令,按照相应的规范格式(JPA规范,NoSQL规范, Hibernate框架等),逐条解析图元描述文件;

4、按照图元描述文件的解析结果,转换成符合对应规范模式的POJO 的代码,组合生成POJO。

现有的数据库开发框架中,用户通过与POJO对应的DAO数据存取对象 接口,将POJO的数据存入数据库或者取出数据库,因此,在本发明实施例中, DAO也是图元模型的代码呈现;DAO对象生成模块4022会根据用户在图元 编辑环境中发出的指令,例如用户输入的指示生成输入符合特定的关系型或非 关系型数据库规范格式(例如JPA、NoSqlDB等规范)代码的指令,将用户在 图元编辑环境中设计出来的数据图元对象转变成符合规范格式(例如JPA、 NoSqlDB等)的DAO。

同样地,本发明实施例中,DAO对象生成模块4022除了要能够生成与关 系型数据库对应的DAO之外,也要能够生成非关系型数据库对应的DAO。

关系型数据库以及非关系型数据库对应的DAO的生成工作是自动完成 的。其实现流程如图8所示:

1’、用户在开发工具中按照业务需求进行数据对象的设计;

2’、按照规定算法,对用户设计的图元化数据对象进行编译,生成以XML 文档为表现形式的图元描述文件;

3’、根据开发者指令,按照相应的规范格式(JPA规范,NoSQL规范, Hibernate框架等),解析图元描述文件;

4’、按照相应的规范格式,在DAO代码模板中选择合适的DAO模板;

5’、按照图元描述文件的解析结果,替换DAO模板中的关键字,组装生 成对应的DAO的代码。

以背景技术中提到的DAO的代码为例,可以按照图元描述文件的解析结 果,替换掉“public void save(Admin entity)”语句中的“Admin entity”’的关键 字,完成DAO模板中所有关键字的替换后,就生成了对应的DAO的代码。

进一步地,如图5所示,上述数据库域模块403,具体包括:

对象关系映射模块4031,用于按照预设的映射策略,将生成的POJO映射 成为数据库中的数据库表;

SQL代码生成与映射模块4032,用于根据对象关系映射模块4031映射的 数据库表,生成创建数据库表的SQL代码并执行,完成数据库表的创建;以 及根据生成的DAO定义的操作请求,将DAO映射成为对数据库中数据库表 及数据库表数据成员的操作的SQL代码并执行,完成对数据库的相关操作。

上述对象关系映射模块4031所使用的映射策略可以是对象与数据库表之 间可能是一对一的映射,也可能是多个对象映射成为一张数据库表等,其原则 是尽量减少数据库表之间的冗余和复杂关联,这将有利于后续的数据查询和存 取动作,但对于采用何种具体的策略和映射算法,本发明实施例并不作限定。 同时,对象关系映射模块4031负责调用SQL代码生成域映射模块4032,从而 实现将POJO的存取操作映射成为对于数据库表以及表中数据成员的操作。

具体来说,上述SQL代码生成域映射模块4032,负责根据POJO和DAO, 生成最终的SQL代码,从而实现对底层数据库的操作。除了根据对象关系映 射模块4031映射出来的数据库表,生成对应的SQL语句,完成将数据库和数 据库表的创建(Create)操作之外,还需要根据DAO中的操作请求例如选择 (select)、更新(update)和删除(delete)等,将其映射成对应的SQL操作语 句,其实现流程如图9所示:

1”、开发者在开发工具中按照业务需求进行数据对象的设计;

2”、按照规定算法,对开发者设计的图元化数据对象进行编译,生成以 XML文档为表现形式的图元描述文件;

3”、根据开发者指令,按照相应的规范格式(JPA规范,NoSQL规范, Hibernate框架等),解析图元描述文件;并生成POJO的代码;

4”、根据生成的POJO的代码,进行ORM映射;

5”、根据ORM映射,生成SQL操作语句;进行数据库的创建以及数据库 表的创建工作;

6”、通过SQL语句,完成数据库操作;

较佳地,为了使得本发明实施例提供的数据库持久层装置能够与底层采用 不同通讯协议和数据格式的数据库(包括关系型数据库和非关系型数据库)进 行通讯,如图5所示,数据库域模块在上述细分模块的基础上,增加数据库中 间件模块4033,该模块用于为SQL代码生成与映射模块与采用不同通讯协议 和数据格式的各底层数据库提供统一的通讯接口,能够屏蔽这些底层数据库之 间的差异,而对上层的DAO呈现出统一的接口和使用方法。这将简化DAO 的生成工作。

更近一步地,虽然本发明提供的上述数据库持久层装置中,POJO的代码、 DAO的代码和SQL的代码都是自动生成的,出于为用户展示这些代码以用户 对这些代码进行编辑、修改和调试的需要,在本发明实施例中,还可以在图5 所示的架构的基础上,增加Java代码编译调试域模块和SQL代码编译调试域 模块(如图10所示的架构图),其中:

Java代码编译调试域模块404,用于向用户提供显示、编辑和调试POJO 以及DAO的代码的环境。

SQL代码编译调试域模块405,用于向用户提供显示、编辑和调试SQL 代码的环境。

基于同一发明构思,本发明实施例还提供了一种使用本发明实施例提供的 上述数据库持久层装置对数据库进行操作的方法,由于该方法所解决问题的原 理与前述装置相似,因此该方法的实施可以参见前述方法的实施,重复之处不 再赘述。

本发明实施例提供的使用本发明实施例提供的数据库持久层装置进行数 据库操作的方法,如图11所示,包括下述步骤:

S1101、接收用户在图元编辑环境中输入的对图元形式表示的数据对象的 设计指令,对用户设计的数据对象进行编译,生成对应的图元描述文件;

S1102、对生成的图元描述文件进行解析,生成对应的POJO以及DAO;

S1103、将生成的POJO映射成为数据库中的数据库表,以及根据生成的 DAO,执行对数据库中数据库表及数据库表数据成员的操作。

上述步骤S1102中,生成对应的POJO以及DAO,具体通过下述过程实 现:

根据用户在图元编辑环境中输入的数据库持久层代码生成指令中设定的 关系型或非关系型数据库的规范,逐行解析所生成的图元描述文件,将其转换 生成对应的POJO的代码;

根据用户在图元编辑环境中输入的数据库持久层代码生成指令中设定的 关系型或非关系型数据库的规范,选择DAO的模板,并根据对图元描述文件 的解析结果,替换所选择的DAO模板中的关键字,组装生成对应的DAO的 代码。

在上述步骤S1103中,按照预设的映射策略,将生成的POJO映射成为数 据库中的数据库表;根据映射的数据表生成创建数据库表的SQL代码并执行, 完成数据库表的创建;

根据生成的DAO定义的操作请求,将DAO映射成为对数据库中数据库 表及数据库表数据成员的操作的SQL代码并执行,完成对数据库的相关操作。

较佳地,上述使用本发明实施例提供的数据库持久层装置进行数据库操作 的方法,在接收到用户从外部导入所述图元编辑环境的图元描述文件时,进行 反向编译,生成以图元形式表示的数据对象并显示给用户。

本发明实施例提供的上述数据库持久层装置及数据库操作方法,图元域模 块提供图元编辑环境,接收用户的设计指令,对用户设计的数据对象进行编译, 生成对应的图元描述文件;图元代码映射与代码生成域模块解析所述图元域模 块生成的图元描述文件,自动生成对应的POJO以及DAO;数据库域模块将生 成的POJO映射成为数据库中的数据库表,以及根据生成的DAO,执行对数据 库中数据库表及数据库表数据成员的操作。本发明实施例能够为数据库的开发 者提供了图元编辑环境,使得用户可以以面对对象的思维,以图元化的方式, 设计出数据对象,设计过程更为简单,更为重要的是,本发明实施例可以实现 POJO和DAO的代码的自动生成,这大大减少了数据库开发者的工作量,提高 了开发效率。

进一步地,本发明实施例提供的上述数据库持久层装置及数据库操作方 法,还包括数据库中间件模块,屏蔽了底层不同类型数据库之间的差异,实现 了对不同类型(包括关系型数据库和非关系型数据库)的操作。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发 明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及 其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号