一种基于视图的数据访问系统及其方法

文档序号:6429747阅读:203来源:国知局

专利名称::一种基于视图的数据访问系统及其方法
技术领域
:本发明涉及计算机数据访问
技术领域
,尤其是涉及一种应用于计算机信息领域的基于视图的数据访问系统及其方法。
背景技术
:当前,基于关系数据库的数据访问中,主要有几下几种方法(1)内嵌SQL代码图1中所采用的方法是SQL(StructuredQueryLanguage,结构化查询语言)代码直接嵌入在业务类中,这种策略是针对小型系统能快速开发。但是它的缺点也是很显然的,SQL代码是写在源代码中,这就意味着任何一个简单的改变,例如改变数据库中表的一个列名,则必须修改源代码。这种修改对于一个小型系统尚可接受,如果对于大中型系统,这种缺陷是极为严重的。(2)业务类建立独立的数据类图2中所采用的方法是业务类的SQL代码写在独立的一个或多个数据类中或在存储过程中。这种方法相对于把SQL代码嵌入在业务类中有了很大的进步,但是这种方法同样也只适用于业务类小于40至50个左右的小型系统。同时,当数据库进行简单的改变时,相应的数据类要重新编译。这种方法只是做到了压缩源代码,而把处理SQL放置在了数据类。采用这种方法,在支持多个对象模型对应同一个映射定义方面缺乏灵活性,开发人员必须手工映射每一个对象模型。更糟糕的是,在企业级应用中,这种方法在异构组件环境中不能很好的独立,而且由于方法是静态的,即一个类对应一个映射模型,所以是不可扩展的。(3)业务类建立共享的数据类图3中所采用的方法是为所有业务类建立一个共享数据类来实现数据访问,实际上是针对为每个业务类建立独立数据类方法的改进。和上述的独立数据类方法相比,共享数据类实现了代码的重用性。图4所示的共享数据类图,其中方法参数tableName为表名,两个静态数组Name和Value分别存放列名和列值。具体方法包括查询、增加、删除和修改,根据表名参数和两个静态数组,利用动态SQL技术实现SQL代码的自动生成。共享数据类方法摆脱了繁重的SQL语句,实现了SQL语句的自动生成。从这个角度来说,共享数据类方法有了极大的提高,但是共享数据类只适应于单表操作,不适用多表操作,例如查询操作中需要从数据库多张表中获取数据时,上述共享数据类无法实现。在现有技术当中,一种与本发明最接近的技术为由浪潮集团山东通用软件有限公司于2007年05月10日申请,2007年11月07日公开,公开号为CN101067814A的中国发明专利申请《数据访问层XML格式数据与关系数据间的映射转换方法》所公开。该发明主要是说明数据访问层的作用模式、方法。它提供一种数据访问层XML格式数据与关系数据间的映射转换方法,该方法主要包括设计时和运行时两个阶段,其中在设计时阶段,针对关系数据的数据结构以及对象与关系数据的映射和转换进行建模,描述为数据对象和数据模型两种元数据,数据对象是关系数据进行建模,将数据库中的表和视图的数据结构抽象出来,描述其名称、字段属性等。在运行时阶段,由数据访问引擎,根据设计时定义的元数据信息,结合输入的数据信息,动态的构造数据库存取访问的SQL(结构化查询语言)语句,访问数据库,自动完成增删改查的数据访问层的功能,并对动态构造过程的结果进行适量缓存。(1)在内嵌SQL代码方法中,SQL代码写在源代码中,任何一个简单的改变则必须修改源代码;(2)在业务类建立独立的数据类方法中,SQL代码写在独立的一个或多个数据类中或在存储过程中。采用这种方法,在支持多个对象模型对应同一个映射定义方面缺乏灵活性,开发人员必须手工映射每一个对象模型。更糟糕的是,在企业级应用中,这种方法在异构组件环境中不能很好的独立,而且由于方法是静态的,即一个类对应一个映射模型,所以是不可扩展的;(3)在业务类建立共享的数据类方法中,为所有业务类建立一个共享数据类来实现数据访问,利用动态SQL技术实现SQL代码的自动生成。共享数据类方法摆脱了繁重的SQL语句,实现了SQL语句的自动生成。从这个角度来说,共享数据类方法有了极大的提高,但是共享数据类只适用于单表操作,不适用于多表操作,例如查询操作中需要从数据库多张表中获取数据时,上述共享数据类无法实现。(4)当用户使用CN101067814A发明专利申请的方法进行表格数据操作时,若表格的数据源为以下情况(a)在SELECT语句中使用DISTINCT操作符的视图;(b)使用类似SUN或MAX等聚集函数的视图;(c)包含GROUPBY、ORDERBY子句的视图;(d)在SELECT列表中使用子查询的视图;(e)联合多个表的视图。上述的这几类视图在一般情况下不能通过SQL语句进行更新,例如无法用一句标准SQL(例如Update)来操作多个物理表组成的视图数据;当数据源有视图和物理表,开发人员不但要熟悉数据库的表定义,还要熟悉大量的视图定义,增加了开发难度。
发明内容本发明提供一种基于视图的数据访问系统及其方法,该系统及其方法在源代码文件中不出现SQL代码,实现数据访问组件对象对关系数据库的映射,有效地减少了开发人员的工程量,可以缩短整个开发周期。同时整个系统易于学习和操作。本发明提供一种基于视图的数据访问系统的技术实现方案,一种基于视图的数据访问系统,包括界面组件、数据访问层、数据库接口、关系数据库连接模块、关系数据库;界面组件与数据访问层相连,并向数据访问层发送用户消息;数据访问层包括对象创建组件和数据访问组件,数据访问层的对象创建组件创建数据访问组件,数据访问组件包括复杂视图组件和简单视图组件;数据访问组件产生SQL操作语句,数据访问组件与数据库接口相连接,通过XML配置文件获取数据库信息,同时获取数据库连接对象;数据库接口与关系数据库连接模块相连,通过关系数据库连接模块将SQL操作语句传递给关系数据库,关系数据库执行SQL操作语句,并通过关系数据库连接模块将数据访问组件对象中的获取数据属性所定义的查询语句传递给关系数据库,关系数据库执行查询语句;关系数据库连接模块根据查询语句将所返回的数据传输给数据访问组件;数据访问组件将获取的数据源传输至界面组件进行显示,界面组件刷新数据,并通知用户。作为本发明一种基于视图的数据访问系统技术方案的进一步改进,复杂视图组件包括第一中心控制器、第一SQL操作生成器、第一视图生成器、INSTEADOF触发器生成器、第一动态SQL拼装生成器、第一连接器、第一公共属性集合;第一中心控制器接收用户消息,返回用户数据或提示信息,解析XML映射文件并写入第一公共属性集合,向第一SQL操作生成器、第一视图生成器、INSTEADOF触发器生成器发送动作消息,并接收第一SQL操作生成器、第一视图生成器、INSTEADOF触发器生成器的消息和关系数据库的返回结果;第一SQL操作生成器生成SQL,并通过第一连接器和数据库接口传送至关系数据库;第一视图生成器根据不同的关系数据库创建组件依赖视图的动态SQL;INSTEADOF触发器生成器根据不同的关系数据库创建一个在组件依赖视图上操作的INSTEADOF触发器的动态SQL;动态SQL拼装生成器根据第一公共属性集合输出的公共属性值进行SQL的拼装,实现动态SQL;第一连接器与数据库接口进行连接;第一公共属性集合存储来自第一中心控制器解析XML映射文件的相关信息。作为本发明一种基于视图的数据访问系统技术方案的进一步改进,简单视图组件包括第二中心控制器、第二SQL操作生成器、第二视图生成器、第二动态SQL拼装生成器、第二连接器、第二公共属性集合;第二中心控制器接收用户消息,返回用户数据或提示信息,解析XML映射文件并写入公共属性集合,并向第二SQL操作生成器和第二视图生成器发送动作消息,接收第二SQL操作生成器和第二视图生成器的消息和数据库的返回结果;第二SQL操作生成器生成SQL,并通过第二连接器和数据库接口传送至关系数据库;第二视图生成器根据不同的关系数据库创建组件依赖视图的动态SQL;第二动态SQL拼装生成器根据第二公共属性集合输出的公共属性值进行SQL的拼装,实现动态SQL;第二连接器与数据库接口进行连接;第二公共属性集合存储来自第二中心控制器解析XML映射文件的相关信息。本发明还提供一种利用上述基于视图的数据访问系统进行数据访问的方法的技术实现方案,该方法包括以下步骤SlOl界面组件向数据访问层发送包括具体的操作消息、视图组件类型标识、XML映射文件和XML配置文件的路径、数据访问组件对象标识、数据访问组件获取数据标识在内的用户消息;S102:数据访问层的对象创建组件根据视图组件标识创建一个数据访问组件对象,数据访问组件对象包括复杂视图组件对象或简单视图组件对象,并完成数据访问组件对象的初始化工作;S103:数据访问组件对象根据复杂视图组件或简单视图组件的类型完成初始化工作,并根据操作消息属性,若是数据获取,则执行数据获取过程;若为数据删除,则执行数据删除过程;若为数据增加或修改,则执行数据增加或修改过程,最后由数据访问组件产生一个SQL操作语句;S104数据访问组件对象连接数据库接口,通过XML配置文件获取数据库信息,同时获取一个数据库连接对象;S105关系数据库连接模块通过数据库连接对象将SQL操作语句传递给关系数据库,关系数据库执行SQL操作语句;S106:关系数据库连接模块通过数据库连接对象将数据访问组件对象中的获取数据属性所定义的查询语句传递给关系数据库,关系数据库执行查询语句;S107:数据库连接对象根据查询语句将所返回的数据传给数据访问组件对象,完成操作后,该数据库连接对象关闭;S108数据访问组件对象将获取的数据源提供给界面组件对象进行显示,系统删除该数据访问组件对象;S109界面组件对象刷新数据,并通知用户。作为本发明一种基于视图的数据访问方法技术方案的进一步改进,基于视图的数据访问方法包括复杂视图组件对象初始化过程,该过程包括以下步骤S201第一中心控制器将用户消息分别写入组件对象的公共属性集合中,包括具体操作消息属性、XML映射文件路径属性、XML配置文件路径属性、对象标识属性、获取数据标识属性或获取数据的查询条件值;S202第一中心控制器根据组件对象的XML映射文件路径属性找到XML映射文件,根据对象标识属性在XML映射文件中实现定位,找到相应的数据块,第一中心控制器对数据块进行XML解析工作,将物理表名、表属性等写入对象的公共属性集中;S203第一中心控制器向第一SQL操作生成器发送获取数据标识属性消息,由第一SQL操作生成器调用第一动态SQL拼装生成器和第一公共属性集合动态产生一个select查询语句,第一SQL操作生成器将select查询语句消息返回给第一中心控制器,第一中心控制器再将select查询语句写入对象的获取数据属性中;S204第一中心控制器向第一SQL操作生成器发送查询数据库视图消息,由第一SQL操作生成器调用第一动态SQL拼装生成器和第一公共属性集合动态产生组件对象所依赖的视图是否存在的SQL,并发送给第一连接器;S205第一连接器连接数据库接口后,创建一个数据库连接对象,关系数据库执行查询视图是否存在的SQL,将结果返回给第一连接器,第一连接器将消息传给第一中心控制器;否则若第一连接器超时,则第一中心控制器发送一个错误信息,流程结束;S206:第一中心控制器收到第一连接器的消息,若视图存在,则直接执行步骤S211;否则第一连接器通过数据库接口关闭新创建的数据库连接对象,同时第一中心控制器向第一视图生成器发送创建视图消息,第一视图生成器的接口根据XML配置文件获取关系数据库类型,选择对应的关系数据库视图生成组件,该组件调用第一动态SQL拼装生成器和第一公共属性集合动态产生一个创建视图的SQL,并将该SQL发送给第一连接器;S207第一连接器收到创建视图的SQL,连接数据库接口,创建一个数据库连接对象,关系数据库执行创建视图SQL,将结果返回给第一连接器,第一连接器将消息传给第一中心控制器;否则若第一连接器超时,则第一中心控制器发送一个错误信息,流程结束;S208第一中心控制器收到视图创建的消息,由第一连接器通过数据库接口关闭新创建的数据库连接对象,同时向INSTEADOF触发器生成器发送创建INSTEADOF触发器消息,INSTEADOF触发器生成器的接口根据XML配置文件获取关系数据库类型,选择对应的关系数据库INSTEADOF触发器生成组件,该组件调用第一动态SQL拼装生成器和第一公共属性集合动态产生一个生成INSTEADOF触发器的SQL,并将该SQL发送给第一连接器;S209第一连接器收到创建INSTEADOF触发器的SQL,连接数据库接口,创建一个数据库连接对象,关系数据库执行创建INSTEADOF触发器SQL,将结果返回给第一连接器,第一连接器将消息传给第一中心控制器;否则若第一连接器超时,则第一中心控制器发送一个错误信息,流程结束;S210第一中心控制器收到INSTEADOF触发器创建的消息;S211第一中心控制器向第一连接器发送关闭信息,由第一连接器通过数据库接口关闭新创建数据库连接对象,同时发送初始化已完成的提示信息,该流程结束。作为本发明一种基于视图的数据访问方法技术方案的进一步改进,基于视图的数据访问方法包括复杂视图组件对象数据获取过程,该过程包括以下步骤S301若视图组件对象没有进行初始化,则先进行初始化流程;S302第一中心控制器向第一SQL操作生成器发送数据获取信息;S303第一SQL操作生成器收到数据获取信息,将对象的数据获取属性发送到第一连接器;S304第一连接器连接数据库接口后,创建一个数据库连接对象,关系数据库在组件对象所依赖的视图上执行一条select获取数据,并将结果返回给第一连接器,第一连接器将数据集传给第一中心控制器;否则若第一连接器超时,则第一中心控制器发送一个错误信息,流程结束;S305第一中心控制器收到数据集后,向第一连接器发送消息,由第一连接器通过数据库接口关闭新创建的数据库连接对象;S306第一中心控制器向界面组件对象传递数据,界面组件对象刷新数据,通知用户后,该流程结束。作为本发明一种基于视图的数据访问方法技术方案的进一步改进,基于视图的数据访问方法包括复杂视图组件对象数据删除过程,该过程包括以下步骤S401先执行对象的初始化工作流程;S402第一中心控制器从具体操作属性判断是删除工作,则向第一SQL操作生成器发送删除信息;S403第一SQL操作生成器接收到删除信息,根据公共属性集首先获取父表属性,其次判断组件对象的物理表是多表还是单表,若是单表,则直接执行S406;若是多表,则第一SQL操作生成器生成一个获取父表主外键的SQL,发送给第一连接器;S404第一连接器连接数据库接口后,创建一个数据库连接对象,关系数据库执行获取父表主外键的SQL,将结果返回给第一连接器,第一连接器将消息传给第一中心控制器;否则若第一连接器超时,则第一中心控制器发送一个错误信息,流程结束;S405:第一中心控制器收到父表的主外键信息,通过第一连接器通知数据库接口关闭新创建的数据库连接对象,同时将主外键信息写入第一公共属性集合,写入完成后,第一中心控制器向第一SQL操作生成器发送主外键成功获取信息;S406:第一SQL操作生成器调用第一动态SQL拼装生成器和公共属性集合,生成一条操作父表的删除SQL,实现单表或多表的信息删除;S407第一连接器连接数据库接口后,创建一个数据库连接对象,关系数据库执行一条操作父表的删除SQL,将结果返回给第一连接器,第一连接器将消息传给第一中心控制器;否则若第一连接器超时,则第一中心控制器发送一个错误信息,流程结束;S408:第一中心控制器收到删除操作消息,通过第一连接器通知数据库接口关闭新创建的数据库连接对象,同时向第一SQL操作生成器发送获取信息;S409执行组件对象的数据获取流程后,流程结束。作为本发明一种基于视图的数据访问方法技术方案的进一步改进,基于视图的数据访问方法包括复杂视图组件对象数据增加和修改过程,该过程包括以下步骤S501先执行组件对象的初始化工作流程;S502第一中心控制器从具体操作属性判断是增加数据工作或修改数据工作,则向第一SQL操作生成器发送增加信息;S503第一SQL操作生成器接收到增加信息,由第一动态SQL拼装生成器产生一条在组件对象所依赖视图上操作的插入语句,实现增加数据和修改数据工作,实现视图的更新;S504第一连接器连接数据库接口后,创建一个数据库连接对象,关系数据库执行插入语句,将结果返回给第一连接器,第一连接器将消息传给第一中心控制器;否则若第一连接器超时,则第一中心控制器发送一个错误信息,流程结束;S505第一中心控制器收到插入操作消息,通过第一连接器通知数据库接口关闭新创建的数据库连接对象,同时向第一SQL操作生成器发送获取信息;S506执行组件对象的数据获取流程后,流程结束。作为本发明一种基于视图的数据访问方法技术方案的进一步改进,基于视图的数据访问方法包括简单视图组件对象初始化过程,该过程包括以下步骤S601第二中心控制器将包括具体操作消息属性、XML映射文件路径属性、XML配置文件路径属性、对象标识属性、获取数据标识属性、获取数据的查询条件值在内的用户消息分别写入组件对象的公共属性集中;S602第二中心控制器根据组件对象的XML映射文件路径属性找到XML映射文件,其次根据对象标识属性在XML映射文件中实现定位,找到相应的数据块,第二中心控制器开始对数据块进行XML解析工作,将物理表名、表属性等写入对象的公共属性集中;S603第二中心控制器向第二SQL操作生成器发送获取数据标识属性消息,由第二SQL操作生成器调用第二动态SQL拼装生成器和第二公共属性集合动态产生一个select查询语句,第二SQL操作生成器将select查询语句消息返回给第二中心控制器,第二中心控制器再将select查询语句写入对象的获取数据属性中;S604第二中心控制器向第二SQL操作生成器发送查询数据库视图消息,由第二SQL操作生成器调用第二动态SQL拼装生成器和第二公共属性集合动态产生组件对象所依赖的视图是否存在的SQL,并发送给第二连接器;S605第二连接器连接数据库接口后,创建一个数据库连接对象,关系数据库执行查询视图是否存在的SQL,将结果返回给第二连接器,第二连接器将消息传给第二中心控制器;否则若第二连接器超时,则第二中心控制器发送一个错误信息,流程结束;S606:第二中心控制器收到第二连接器的消息,若视图存在,则直接执行步骤S609;否则第二连接器通过数据库接口关闭新创建数据库连接对象,同时第二中心控制器向第二视图生成器发送创建视图消息,第二视图生成器的接口根据XML配置文件获取关系数据库类型,选择对应的关系数据库视图生成组件,该组件调用第二动态SQL拼装生成器和第二公共属性集合动态产生一个创建视图的SQL,并将该SQL发送给第二连接器;S607第二连接器收到创建视图的SQL,连接数据库接口,创建一个数据库连接对象,关系数据库执行创建视图SQL,将结果返回给第二连接器,第二连接器将消息传给第二中心控制器;否则若第二连接器超时,则第二中心控制器发送一个错误信息,流程结束;S608第二中心控制器收到视图创建的消息;S609第二中心控制器向第二连接器发送关闭信息,由第二连接器通过数据库接口关闭新创建数据库连接对象,同时发送初始化已完成的提示信息,该流程结束。作为本发明一种基于视图的数据访问方法技术方案的进一步改进,基于视图的数据访问方法包括简单视图组件对象数据删除过程,该过程包括以下步骤S701先执行组件对象的初始化工作流程;S702第二中心控制器从具体操作属性判断是删除工作,则向第二SQL操作生成器发送删除信息;S703:第二SQL操作生成器接收到删除信息,调用第二动态SQL拼装生成器和第二公共属性集合,生成一条在依赖视图上进行操作的删除SQL,实现信息删除;S704第二连接器连接数据库接口后,创建一个数据库连接对象,关系数据库执行一条操作依赖视图的删除SQL,将结果返回给第二连接器,第二连接器将消息传给第二中心控制器;否则若连接器超时,则第二中心控制器发送一个错误信息,流程结束;S705:第二中心控制器收到删除操作消息,通过第二连接器通知数据库接口关闭新创建的数据库连接对象,同时向第二SQL操作生成器发送获取信息;S706执行组件对象的数据获取流程后,流程结束。通过应用上述本发明实施方式所描述的一种基于视图的数据访问系统及其方法的技术方案,达到了如下技术效果(1)利用XML配置文件和XML映射文件生成动态SQL,在源代码文件中不出现SQL代码,实现数据访问组件对象对关系数据库的映射;(2)对操作者来说简单易用,同时提供共享服务有效地减少了开发人员的工程量,可以缩短整个开发周期;(3)开发人员只要熟悉数据库的表定义,视图定义由数据访问组件对象操作。数据库中的视图对开发人员来说是透明的;(4)开发人员在配置XML映射文件时,按照已约定规则,只要配置数据库中的物理表,无须关心实际生成的数据源。为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为现有技术1一种具体实施方式所描述的SQL代码嵌入在业务类中的数据访问系统结构示意图;图2为现有技术2—种具体实施方式所描述的业务类建立独立数据类的数据访问系统结构示意图;图3为现有技术3—种具体实施方式所描述的业务类建立共享数据类的数据访问系统结构示意图;图4为本发明一种具体实施方式所描述的基于视图的数据访问系统工作原理图;图5为本发明一种具体实施方式所描述的基于视图的数据访问系统复杂视图组件的功能结构图;图6为本发明一种具体实施方式所描述的基于视图的数据访问系统简单视图组件的功能结构图;其中,1-界面组件,2-数据访问层,3-数据库接口,4-关系数据库连接模块,5-关系数据库,6-对象创建组件,7-数据访问组件,8-复杂视图组件,9-简单视图组件,10-第一中心控制器,11-第一SQL操作生成器,12-第一视图生成器,13-INSTEADOF触发器生成器,14-第一动态SQL拼装生成器,15-第一连接器,16-第一公共属性集合,17-第二中心控制器,18-第二SQL操作生成器,19-第二视图生成器,20-第二动态SQL拼装生成器,21-第二连接器,22-第二公共属性集合。具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。如附图4、5、6所示,给出了本发明一种基于视图的数据访问系统及其方法应用于计算机信息
技术领域
数据库访问的具体实施例,下面结合附图和具体实施例对本发明作进一步说明。本发明基于视图的数据访问系统以视图为基础,将以下视图定义为复杂视图(1)在SELECT语句中使用DISTINCT操作符的视图;(2)使用类似SUN或MAX等聚集函数的视图;(3)包含GROUPBY、ORDERBY子句的视图;(4)在SELECT列表中使用子查询的视图;(5)联合多个表的视图。除复杂视图之外的视图,则定义为简单视图。数据访问组件按上述视图分类,分为复杂视图组件和简单视图组件。如图4所示的基于视图的数据访问系统包括界面组件1、数据访问层2、数据库接口3、关系数据库连接模块4、关系数据库5;界面组件1与数据访问层2相连,并向数据访问层2发送用户消息;数据访问层2包括对象创建组件6和数据访问组件7,数据访问层2的对象创建组件6创建数据访问组件7,数据访问组件7包括复杂视图组件8和简单视图组件9;数据访问组件7产生SQL操作语句,数据访问组件7与数据库接口3相连接,通过XML配置文件获取数据库信息,同时获取数据库连接对象;数据库接口3与关系数据库连接模块4相连,通过关系数据库连接模块4将SQL操作语句传递给关系数据库5,关系数据库5执行SQL操作语句,并通过关系数据库连接模块4将数据访问组件对象中的获取数据属性所定义的查询语句传递给关系数据库5,关系数据库幻执行查询语句;关系数据库连接模块4根据查询语句将所返回的数据传输给数据访问组件7;数据访问组件7将获取的数据源传输至界面组件1进行显示,界面组件1刷新数据,并通知用户。图4的工作原理图说明了一种基于视图技术的数据访问方法的工作结构,它的工作过程如下SlOl界面组件1向数据访问层2发送用户消息,该消息包括具体的操作消息(例如插入、删除等操作),视图组件类型标识(复杂视图组件或简单视图组件)、XML(ExtensibleMarkupLanguage,可扩展标识语言)映射文件和XML配置文件的路径、数据访问组件对象标识、数据访问组件获取数据标识等;S102数据访问层2的对象创建组件根据视图组件标识创建一个数据访问组件对象(复杂视图组件对象或简单视图组件对象),并完成数据访问组件对象的初始化工作,这部分工作主要是完成解析XML映射文件、创建视图等工作,内部机制详见以下的复杂视图组件和简单视图组件的初始化工作流程;S103数据访问组件对象根据复杂视图组件8或简单视图组件9的类型完成初始化工作,并根据操作消息属性,若是数据获取,则执行数据获取过程;若为数据删除,则执行数据删除过程;若为数据增加或修改,则执行数据增加或修改过程,最后由数据访问组件7产生一个SQL操作语句(例如delete语句);S104数据访问组件对象连接数据库接口3,通过XML配置文件获取相关数据库信息(如某种类型关系数据库,数据库名,IP地址等),通过静态工厂模式获取一个数据库连接对象;S105通过数据库连接对象将SQL操作语句传递给关系数据库5,关系数据库5执行SQL操作语句;S106:通过数据库连接对象将数据访问组件对象中的获取数据属性所定义的查询语句传递给关系数据库5,关系数据库5执行查询语句;S107:数据库连接对象根据查询语句将所返回的数据传给数据访问组件对象,完成操作后,该数据库连接对象关闭;S108:数据访问组件对象将获取的数据源提供给界面组件对象进行显示,系统删除该数据访问组件对象;S109界面组件对象刷新数据,并通知用户。其中,如图5所示的复杂视图组件进一步包括第一中心控制器10、第一SQL操作生成器11、第一视图生成器12、INSTEADOF触发器生成器13、第一动态SQL拼装生成器14、第一连接器15、第一公共属性集合16。复杂视图组件中各部件的功能结构说明如下表1所示。第一中心控制器10接收用户消息,返回用户数据或提示信息,解析XML映射文件并写入第一公共属性集合16,向第一SQL操作生成器11、第一视图生成器12、INSTEADOF触发器生成器13发送动作消息,并接收第一SQL操作生成器11、第一视图生成器12、INSTEADOF触发器生成器13的消息和关系数据库5的返回结果;第一SQL操作生成器11生成SQL,并通过第一连接器15和数据库接口3传送至关系数据库5;第一视图生成器12根据不同的关系数据库5创建组件依赖视图(组件对象根据映射文件所创建的一个视图,组件数据操作在该视图上进行)的动态SQL;INSTEADOF触发器生成器13根据不同的关系数据库5创建一个在组件依赖视图上操作的INSTEADOF触发器的动态SQL;第一动态SQL拼装生成器14根据第一公共属性集合16输出的公共属性值进行SQL的拼装,实现动态SQL;第一连接器15与数据库接口3进行连接;第一公共属性集合16存储来自第一中心控制器10的解析XML映射文件的相关信肩、ο权利要求1.一种基于视图的数据访问系统,其特征在于,包括界面组件(1)、数据访问层O)、数据库接口(3)、关系数据库连接模块G)、关系数据库(5);界面组件⑴与数据访问层⑵相连,并向数据访问层⑵发送用户消息;数据访问层(包括对象创建组件(6)和数据访问组件(7),数据访问层(的对象创建组件(6)创建数据访问组件(7),数据访问组件(7)包括复杂视图组件(8)和简单视图组件⑶;数据访问组件(7)产生SQL操作语句,数据访问组件(7)与数据库接口(相连接,通过XML配置文件获取数据库信息,同时获取数据库连接对象;数据库接口(与关系数据库连接模块(4)相连,通过关系数据库连接模块(4)将SQL操作语句传递给关系数据库(5),关系数据库(5)执行SQL操作语句,并通过关系数据库连接模块(4)将数据访问组件对象中的获取数据属性所定义的查询语句传递给关系数据库(5),关系数据库(执行查询语句;关系数据库连接模块(4)根据查询语句将所返回的数据传输给数据访问组件(7);数据访问组件(7)将获取的数据源传输至界面组件(1)进行显示,界面组件(1)刷新数据,并通知用户。2.根据权利要求1所述的一种基于视图的数据访问系统,其特征在于所述的复杂视图组件(8)包括第一中心控制器(10)、第一SQL操作生成器(11)、第一视图生成器(12)、INSTEADOF触发器生成器(13)、第一动态SQL拼装生成器(14)、第一连接器(15)、第一公共属性集合(16);第一中心控制器(10)接收用户消息,返回用户数据或提示信息,解析XML映射文件并写入第一公共属性集合(16),向第一SQL操作生成器(11)、第一视图生成器(12)、INSTEAD0F触发器生成器(13)发送动作消息,并接收第一SQL操作生成器(11)、第一视图生成器(12)、INSTEADOF触发器生成器(13)的消息和关系数据库(5)的返回结果;第一SQL操作生成器(11)生成SQL,并通过第一连接器(1和数据库接口(传送至关系数据库(5);第一视图生成器(1根据不同的关系数据库(创建组件依赖视图的动态SQL;INSTEADOF触发器生成器(1根据不同的关系数据库(5)创建一个在组件依赖视图上操作的INSTEADOF触发器的动态SQL;第一动态SQL拼装生成器(14)根据第一公共属性集合(16)输出的公共属性值进行SQL的拼装,实现动态SQL;第一连接器(1与数据库接口(进行连接;第一公共属性集合(16)存储来自第一中心控制器(10)解析XML映射文件的相关信3.根据权利要求2所述的一种基于视图的数据访问系统,其特征在于所述的简单视图组件(9)包括第二中心控制器(17)、第二SQL操作生成器(18)、第二视图生成器(19)、第二动态SQL拼装生成器(20)、第二连接器(21)、第二公共属性集合02);第二中心控制器(17)接收用户消息,返回用户数据或提示信息,解析XML映射文件并写入公共属性集合,并向第二SQL操作生成器(18)和第二视图生成器(19)发送动作消息,接收第二SQL操作生成器(18)和第二视图生成器(19)的消息和数据库的返回结果;第二SQL操作生成器(18)生成SQL,并通过第二连接器和数据库接口(传送至关系数据库(5);第二视图生成器(19)根据不同的关系数据库(创建组件依赖视图的动态SQL;第二动态SQL拼装生成器OO)根据第二公共属性集合0输出的公共属性值进行SQL的拼装,实现动态SQL;第二连接器与数据库接口(进行连接;第二公共属性集合0存储来自第二中心控制器(17)解析XML映射文件的相关信肩、ο4.一种对权利要求1、2、3中任一权利要求所述的基于视图的数据访问系统进行数据访问的方法,其特征在于,包括以下步骤SlOl界面组件(1)向数据访问层(2)发送包括具体的操作消息、视图组件类型标识、XML映射文件和XML配置文件的路径、数据访问组件对象标识、数据访问组件获取数据标识在内的用户消息;S102:数据访问层O)的对象创建组件(6)根据视图组件标识创建一个数据访问组件对象,数据访问组件对象包括复杂视图组件对象或简单视图组件对象,并完成数据访问组件对象的初始化工作;5103数据访问组件对象根据复杂视图组件(8)或简单视图组件(9)的类型完成初始化工作,并根据操作消息属性,若是数据获取,则执行数据获取过程;若为数据删除,则执行数据删除过程;若为数据增加或修改,则执行数据增加或修改过程,最后由数据访问组件(7)产生一个SQL操作语句;5104数据访问组件对象连接数据库接口(,通过XML配置文件获取数据库信息,同时获取一个数据库连接对象;5105关系数据库连接模块(4)通过数据库连接对象将SQL操作语句传递给关系数据库(5),关系数据库(5)执行SQL操作语句;5106关系数据库连接模块(4)通过数据库连接对象将数据访问组件对象中的获取数据属性所定义的查询语句传递给关系数据库(5),关系数据库(执行查询语句;5107数据库连接对象根据查询语句将所返回的数据传给数据访问组件对象,完成操作后,该数据库连接对象关闭;5108数据访问组件对象将获取的数据源提供给界面组件对象进行显示,系统删除该数据访问组件对象;5109界面组件对象刷新数据,并通知用户。5.根据权利要求4所述的一种基于视图的数据访问方法,其特征在于所述基于视图的数据访问方法包括复杂视图组件对象初始化过程,该过程包括以下步骤5201第一中心控制器(10)将用户消息分别写入组件对象的公共属性集合中,包括具体操作消息属性、XML映射文件路径属性、XML配置文件路径属性、对象标识属性、获取数据标识属性或获取数据的查询条件值;5202第一中心控制器(10)根据组件对象的XML映射文件路径属性找到XML映射文件,根据对象标识属性在XML映射文件中实现定位,找到相应的数据块,第一中心控制器(10)对数据块进行XML解析工作,将物理表名、表属性等写入对象的公共属性集合中;5203第一中心控制器(10)向第一SQL操作生成器(11)发送获取数据标识属性消息,由第一SQL操作生成器(11)调用第一动态SQL拼装生成器(14)和第一公共属性集合(16)动态产生一个select查询语句,第一SQL操作生成器(11)将select查询语句消息返回给第一中心控制器(10),第一中心控制器(10)再将select查询语句写入对象的获取数据属性中;5204第一中心控制器(10)向第一SQL操作生成器(11)发送查询数据库视图消息,由第一SQL操作生成器(11)调用第一动态SQL拼装生成器(14)和第一公共属性集合(16)动态产生组件对象所依赖的视图是否存在的SQL,并发送给第一连接器(15);5205第一连接器(1连接数据库接口C3)后,创建一个数据库连接对象,关系数据库(5)执行查询视图是否存在的SQL,将结果返回给第一连接器(15),第一连接器(15)将消息传给第一中心控制器(10);否则若第一连接器(15)超时,则第一中心控制器(10)发送一个错误信息,流程结束;5206第一中心控制器(10)收到第一连接器(15)的消息,若视图存在,则直接执行步骤S211;否则第一连接器(1通过数据库接口(关闭新创建的数据库连接对象,同时第一中心控制器(10)向第一视图生成器(1发送创建视图消息,第一视图生成器(1的接口根据XML配置文件获取关系数据库类型,选择对应的关系数据库视图生成组件,该组件调用第一动态SQL拼装生成器(14)和第一公共属性集合(16)动态产生一个创建视图的SQL,并将该SQL发送给第一连接器(15);S207:第一连接器(1收到创建视图的SQL,连接数据库接口(3),创建一个数据库连接对象,关系数据库(执行创建视图SQL,将结果返回给第一连接器(15),第一连接器(15)将消息传给第一中心控制器(10);否则若第一连接器(15)超时,则第一中心控制器(10)发送一个错误信息,流程结束;5208第一中心控制器(10)收到视图创建的消息,由第一连接器(1通过数据库接口(3)关闭新创建的数据库连接对象,同时向INSTEADOF触发器生成器(1发送创建INSTEAD0F触发器消息,INSTEADOF触发器生成器(1的接口根据XML配置文件获取关系数据库类型,选择对应的关系数据库INSTEADOF触发器生成组件,该组件调用第一动态SQL拼装生成器(14)和第一公共属性集合(16)动态产生一个生成INSTEADOF触发器的SQL,并将该SQL发送给第一连接器(15);5209第一连接器(1收到创建INSTEADOF触发器的SQL,连接数据库接口(3),创建一个数据库连接对象,关系数据库(执行创建INSTEADOF触发器SQL,将结果返回给第一连接器(15),第一连接器(15)将消息传给第一中心控制器(10);否则若第一连接器(15)超时,则第一中心控制器(10)发送一个错误信息,流程结束;5210第一中心控制器(10)收到INSTEADOF触发器创建的消息;5211第一中心控制器(10)向第一连接器(1发送关闭信息,由第一连接器(15)通过数据库接口(关闭新创建数据库连接对象,同时发送初始化已完成的提示信息,该流程结束。6.根据权利要求4或5所述的一种基于视图的数据访问方法,其特征在于所述基于视图的数据访问方法包括复杂视图组件对象数据获取过程,该过程包括以下步骤S301若视图组件对象没有进行初始化,则先进行初始化流程;5302第一中心控制器(10)向第一SQL操作生成器(11)发送数据获取信息;5303第一SQL操作生成器(11)收到数据获取信息,将对象的数据获取属性发送到第一连接器(15);S304:第一连接器(1连接数据库接口(后,创建一个数据库连接对象,关系数据库(5)在组件对象所依赖的视图上执行一条select获取数据,并将结果返回给第一连接器(15),第一连接器(1将数据集传给第一中心控制器(10);否则若第一连接器(1超时,则第一中心控制器(10)发送一个错误信息,流程结束;S305第一中心控制器(10)收到数据集后,向第一连接器(1发送消息,由第一连接器(1通过数据库接口(关闭新创建的数据库连接对象;S306:第一中心控制器(10)向界面组件对象传递数据,界面组件对象刷新数据,通知用户后,该流程结束。7.根据权利要求4或5所述的一种基于视图的数据访问方法,其特征在于所述基于视图的数据访问方法包括复杂视图组件对象数据删除过程,该过程包括以下步骤5401先执行对象的初始化工作流程;5402第一中心控制器(10)从具体操作属性判断是删除工作,则向第一SQL操作生成器(11)发送删除信息;5403第一SQL操作生成器(11)接收到删除信息,根据公共属性集首先获取父表属性,其次判断组件对象的物理表是多表还是单表,若是单表,则直接执行S406;若是多表,则第一SQL操作生成器(11)生成一个获取父表主外键的SQL,发送给第一连接器(15);5404第一连接器(1连接数据库接口C3)后,创建一个数据库连接对象,关系数据库(5)执行获取父表主外键的SQL,将结果返回给第一连接器(15),第一连接器(1将消息传给第一中心控制器(10);否则若第一连接器(15)超时,则第一中心控制器(10)发送一个错误信息,流程结束;5405第一中心控制器(10)收到父表的主外键信息,通过第一连接器(1通知数据库接口(关闭新创建的数据库连接对象,同时将主外键信息写入第一公共属性集合(16),写入完成后,第一中心控制器(10)向第一SQL操作生成器(11)发送主外键成功获取信息;S406:第一SQL操作生成器(11)调用第一动态SQL拼装生成器(14)和第一公共属性集合(16),生成一条操作父表的删除SQL,实现单表或多表的信息删除;5407第一连接器(1连接数据库接口C3)后,创建一个数据库连接对象,关系数据库(5)执行一条操作父表的删除SQL,将结果返回给第一连接器(15),第一连接器(15)将消息传给第一中心控制器(10);否则若第一连接器(15)超时,则第一中心控制器(10)发送一个错误信息,流程结束;5408第一中心控制器(10)收到删除操作消息,通过第一连接器(15)通知数据库接口(3)关闭新创建的数据库连接对象,同时向第一SQL操作生成器(11)发送获取信息;5409执行组件对象的数据获取流程后,流程结束。8.根据权利要求4或5所述的一种基于视图的数据访问方法,其特征在于所述基于视图的数据访问方法包括复杂视图组件对象数据增加和修改过程,该过程包括以下步骤5501先执行组件对象的初始化工作流程;5502第一中心控制器(10)从具体操作属性判断是增加数据工作或修改数据工作,则向第一SQL操作生成器(11)发送增加信息;5503第一SQL操作生成器(11)接收到增加信息,由第一动态SQL拼装生成器(14)产生一条在组件对象所依赖视图上操作的插入语句,实现增加数据和修改数据工作,实现视图的更新;5504第一连接器(1连接数据库接口C3)后,创建一个数据库连接对象,关系数据库(5)执行插入语句,将结果返回给第一连接器(15),第一连接器(1将消息传给第一中心控制器(10);否则若第一连接器(1超时,则第一中心控制器(10)发送一个错误信息,流程结束;5505第一中心控制器(10)收到插入操作消息,通过第一连接器(15)通知数据库接口(3)关闭新创建的数据库连接对象,同时向第一SQL操作生成器(11)发送获取信息;5506执行组件对象的数据获取流程后,流程结束。9.根据权利要求4或5所述的一种基于视图的数据访问方法,其特征在于所述基于视图的数据访问方法包括简单视图组件对象初始化过程,该过程包括以下步骤5601第二中心控制器(17)将包括具体操作消息属性、XML映射文件路径属性、XML配置文件路径属性、对象标识属性、获取数据标识属性、获取数据的查询条件值在内的用户消息分别写入组件对象的公共属性集中;5602第二中心控制器(17)根据组件对象的XML映射文件路径属性找到XML映射文件,其次根据对象标识属性在XML映射文件中实现定位,找到相应的数据块,第二中心控制器(17)开始对数据块进行XML解析工作,将物理表名、表属性等写入对象的公共属性集中;5603第二中心控制器(17)向第二SQL操作生成器(18)发送获取数据标识属性消息,由第二SQL操作生成器(18)调用第二动态SQL拼装生成器00)和第二公共属性集合02)动态产生一个select查询语句,第二SQL操作生成器(18)将select查询语句消息返回给第二中心控制器(17),第二中心控制器(17)再将select查询语句写入对象的获取数据属性中;5604第二中心控制器(17)向第二SQL操作生成器(18)发送查询数据库视图消息,由第二SQL操作生成器(18)调用第二动态SQL拼装生成器00)和第二公共属性集合02)动态产生组件对象所依赖的视图是否存在的SQL,并发送给第二连接器;5605第二连接器连接数据库接口C3)后,创建一个数据库连接对象,关系数据库(5)执行查询视图是否存在的SQL,将结果返回给第二连接器(21),第二连接器将消息传给第二中心控制器(17);否则若第二连接器超时,则第二中心控制器(17)发送一个错误信息,流程结束;5606第二中心控制器(17)收到第二连接器的消息,若视图存在,则直接执行步骤S609;否则第二连接器通过数据库接口(关闭新创建数据库连接对象,同时第二中心控制器(17)向第二视图生成器(19)发送创建视图消息,第二视图生成器(19)的接口根据XML配置文件获取关系数据库类型,选择对应的关系数据库视图生成组件,该组件调用第二动态SQL拼装生成器OO)和第二公共属性集合0动态产生一个创建视图的SQL,并将该SQL发送给第二连接器;S607:第二连接器收到创建视图的SQL,连接数据库接口(3),创建一个数据库连接对象,关系数据库(执行创建视图SQL,将结果返回给第二连接器(21),第二连接器(21)将消息传给第二中心控制器(17);否则若第二连接器超时,则第二中心控制器(17)发送一个错误信息,流程结束;5608第二中心控制器(17)收到视图创建的消息;5609第二中心控制器(17)向第二连接器发送关闭信息,由第二连接器通过数据库接口(关闭新创建数据库连接对象,同时发送初始化已完成的提示信息,该流程结束。10.根据权利要求4或5所述的一种基于视图的数据访问方法,其特征在于所述基于视图的数据访问方法包括简单视图组件对象数据删除过程,该过程包括以下步骤5701先执行组件对象的初始化工作流程;5702第二中心控制器(17)从具体操作属性判断是删除工作,则向第二SQL操作生成器(18)发送删除信息;5703第二SQL操作生成器(18)接收到删除信息,调用第二动态SQL拼装生成器QO)和第二公共属性集合(22),生成一条在依赖视图上进行操作的删除SQL,实现信息删除;5704第二连接器连接数据库接口C3)后,创建一个数据库连接对象,关系数据库(5)执行一条操作依赖视图的删除SQL,将结果返回给第二连接器(21),第二连接器将消息传给第二中心控制器(17);否则若连接器超时,则第二中心控制器(17)发送一个错误信息,流程结束;5705第二中心控制器(17)收到删除操作消息,通过第二连接器通知数据库接口(3)关闭新创建的数据库连接对象,同时向第二SQL操作生成器(18)发送获取信息;5706执行组件对象的数据获取流程后,流程结束。全文摘要本发明公开了一种基于视图的数据访问系统及其方法,界面组件与数据访问层相连,数据访问层的对象创建组件创建数据访问组件,数据访问组件包括复杂视图组件和简单视图组件;数据访问组件产生SQL操作语句,数据访问组件与数据库接口相连,数据库接口通过关系数据库连接模块将SQL操作语句传递给关系数据库,关系数据库执行SQL操作语句,并将数据访问组件对象中获取数据属性所定义的查询语句传递给关系数据库,关系数据库执行查询语句;关系数据库连接模块根据查询语句将所返回的数据传输给数据访问组件;数据访问组件将获取的数据源传输至界面组件进行显示。本发明有效地减少了开发人员的工程量,可以缩短整个开发周期。文档编号G06F17/30GK102254029SQ201110216880公开日2011年11月23日申请日期2011年7月29日优先权日2011年7月29日发明者刘旭君,吴卫平,周晓,杨献,杨玻雅申请人:株洲南车时代电气股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1