CN101582079B - 一种对象查询方法和装置 - Google Patents
一种对象查询方法和装置 Download PDFInfo
- Publication number
- CN101582079B CN101582079B CN2009100873242A CN200910087324A CN101582079B CN 101582079 B CN101582079 B CN 101582079B CN 2009100873242 A CN2009100873242 A CN 2009100873242A CN 200910087324 A CN200910087324 A CN 200910087324A CN 101582079 B CN101582079 B CN 101582079B
- Authority
- CN
- China
- Prior art keywords
- query
- dto
- metadata
- business
- database
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 28
- 230000002688 persistence Effects 0.000 claims abstract description 54
- 230000002085 persistent effect Effects 0.000 claims description 12
- 238000013461 design Methods 0.000 claims description 9
- 230000005540 biological transmission Effects 0.000 claims description 6
- 238000010367 cloning Methods 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 6
- 230000003993 interaction Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 4
- 235000010627 Phaseolus vulgaris Nutrition 0.000 description 1
- 244000046052 Phaseolus vulgaris Species 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种对象查询方法和装置,其中,该方法包括:步骤A,根据业务需求建立元数据模型;生成所述元数据模型对应的对象代码;步骤B,根据所述对象代码和预定义的持久化引擎查询接口执行查询操作。采用本发明,可以直接利用操作对象的方式执行查询操作,无需现有技术中需要编译复杂SQL语句来实现查询操作。
Description
技术领域
本发明涉及数据库技术,特别涉及一种对象查询方法和装置。
背景技术
在目前的软件开发系统中,结构化查询语言(SQL:Structured QueryLanguage)由于具有结构简洁等诸多优点而被用户广泛应用。SQL是一种数据库查询和程序设计语言,按照美国国家标准协会的规定,SQL被作为关系型数据库管理系统的标准语言。其中,在逻辑代码中编译SQL语句能够实现数据库的查询操作。
具体地,现有的利用SQL语句对数据库执行查询操作包括:根据业务需求打开对应的数据库;与数据库建立连接;之后,用户在逻辑代码中根据当前需求编写SQL查询语句,通过这些SQL查询语句实现数据库的查询操作。
然而,用户编译SQL查询语句是一个非常复杂的过程,具体体现在:在编写SQL查询语句时,需要遵循与数据库表信息有关的SQI编译规范,其中,数据库表信息具体为数据库表名、该数据库表中的字段以及该字段表示的意义等,如此,就要求用户在编译SQL语句时,需要对数据库了如指掌,如此加大了用户的编程工作量,也大大提高了编程门槛;并且,由于SQL查询语句是面向过程的,而该语句还需要遵循与数据库表信息有关的SQI编译规范,这会使编写出来的代码很长,大大增加了维护成本。
发明内容
本发明提出了一种对象查询方法和装置,无需用户编译复杂的查询语句。
为达到上述目的,本发明的技术方案包括:
一种对象查询方法,该方法包括:
步骤A,根据业务需求建立元数据模型;生成所述元数据模型对应的对象代码;
步骤B,根据所述对象代码和预定义的持久化引擎查询接口执行查询操作。
可选的,所述元数据模型中包含一个以上的数据传输对象DTO;
所述步骤A中根据业务需求建立元数据模型包括:
步骤A1,若当前存在与所述业务需求对应的数据库,则根据所述业务需求从数据库中拖拽出一个以上的DTO,根据已设置的DTO关联关系信息建立包含拖拽出的DTO的元数据模型;
步骤A2,若当前不存在与所述业务需求对应的数据库,根据所述业务需求配置DTO;根据配置的DTO中的属性字段建立包含该配置的DTO的元数据模型。
较佳的,在步骤A2完成建立元数据模型后,进一步包括:根据该元数据模型生成对应的数据库。
其中,所述步骤B包括:
步骤B1,将所述对象代码编译成业务对象库;其中,该业务对象库包含一个以上的业务对象;
步骤B2,在业务逻辑代码中根据当前需求使用对应的业务对象编写对象查询语言OQL语句,将该OQL语句作为预定义的持久化引擎查询接口的参数实现查询操作。
其中,所述步骤B2中将该OQL语句作为预定义的持久化引擎查询接口的参数实现查询操作包括:
步骤B21,预定义的持久化引擎在所述持久化引擎查询接口上接收到查询触发后,判断当前是否缓存了需要查询的业务数据,如果是,执行步骤B22;否则,执行步骤B23;
步骤B22,通过深度克隆的方式提供该业务数据;
步骤B23,从已缓存的元数据中查找要使用的业务对象对应的元数据,如果查找到,根据该查找到的元数据去数据库中获取并提供相应的业务数据。
一种对象查询装置,该装置包括:数据设计模块和持久化引擎模块;其中,
所述数据设计模块用于根据业务需求建立元数据模型;以及生成所述元数据模型对应的对象代码;
所述持久化引擎模块用于根据所述对象代码和预定义的持久化引擎查询接口执行查询操作。
可选的,所述元数据模型中包含一个以上的数据传输对象DTO;
所述数据设计模块包括:
判断单元,用于判断当前是否存在与所述业务需求对应的数据库;
第一模型生成单元,用于当所述判断单元判断出当前存在与所述业务需求对应的数据库时,则根据所述业务需求从数据库中拖拽出一个以上的DTO,根据已设置的DTO关联关系信息建立包含拖拽出的DTO的元数据模型;
第二模型生成单元,用于当所述判断单元判断出当前不存在与所述业务需求对应的数据库时,根据所述业务需求配置DTO;根据配置的DTO中的属性字段建立包含该配置的DTO的元数据模型。
较佳的,所述第二模型生成单元完成建立元数据模型后,进一步根据该元数据模型生成数据库。
其中,所述持久化引擎模块包括:
编译单元,用于将所述对象代码编译成业务对象库;其中,该业务对象库包含一个以上的业务对象;
查询单元,用于在业务逻辑代码中根据当前需求使用所述编译单元编译出的业务对象库中对应的业务对象编写对象查询语言OQL语句,将该OQL语句作为预定义的持久化引擎查询接口的参数实现查询操作。
其中,所述查询单元在接收到查询触发后,
判断当前是否缓存了需要查询的业务数据,如果是,将缓存中存储的业务数据通过深度克隆的方式提供;否则,从已缓存的元数据中查找要使用的业务对象对应的元数据,如果查找到,根据该查找到的元数据去数据库中获取并提供相应的业务数据。
由以上技术方案可以看出,本发明实施例提供的对象查询方法和装置中,并不是由用户与数据库进行交互的,而是由预定义的持久化引擎与数据库进行交互,这样,用户在需要执行查询操作时,不需要关心数据库中的信息,而是直接根据业务需求编写对应的对象查询语言OQL语句,也就是说,该OQL语句并不像现有技术中的SQL语句那样还需要涉及到数据库表名、数据库表字段等信息,而是仅与需要查询的对象的信息有关,因此,本发明并不需要现有技术中编译复杂SQL查询语句的操作。如此,就不会出现现有技术中利用SQL语句所出现的编译过程复杂、编程门槛高等技术问题,大大减少了用户的编程工作量,提高了对数据库查询操作的效率。
进一步地,本发明实施例通过将业务对象信息(比如业务对象数据,或者业务对象的元数据)缓存在持久化引擎中,该持久化引擎中存储的信息都是面向对象的,后续查询时,直接从缓存中而不是数据库中查询出业务对象的信息,这样,也大大提高了查询效率,并非现有技术中用户每次执行查询操作时都执行与数据库交互的操作,减少数据库的交互压力。可以看出,相比于现有技术,本发明实施例提供的方法更加简单、快捷。
附图说明
图1为本发明实施例提供的流程图;
图2为本发明实施例提供的元数据模型示意图;
图3为本发明实施例提供的应用示意图;
图4为本发明实施例提供的装置结构图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
本发明实施例提供的对象查询方法中,需要根据业务需求预定义持久化引擎,其中,该持久化引擎能直接与数据库进行交互,并提供了用于执行查询操作的查询接口。当用户需要执行查询操作时,该方法主要包括:根据业务需求建立元数据模型;并生成所述元数据模型对应的对象代码;根据所述对象代码和预定义的持久化引擎提供的查询接口(简称预定义的持久化引擎查询接口)执行查询操作。
为使本发明实施例更加清楚,下面举一具体流程进行描述。
参见图1,图1为本发明实施例提供的流程图。在该实施例中,首先预定义能直接与数据库进行交互的持久化引擎,该持久化引擎中提供了具体的查询接口(记为预定义的持久化引擎查询接口),如图1所示,该流程可包括以下步骤:
步骤101,分析具体的业务需求,根据该业务需求建立元数据模型。
这里,建立的元数据模型实质上是软件开发人员在开始进行软件开发时通过分析当前具体的业务需求所建立的一个“模子”,其具体提供了一个类型的概念。
具体地,元数据模型包含了数据传输对象(DTO:Data Transfer object)以及在包含多个DTO时各个DTO之间的关联关系。参见图2,图2为本实施例提供的元数据模型的示意图。如图2所示,该元数据模型包含了职员DTO、岗位DTO、银行卡DTO、外号DTO和部门DTO等数据传输对象,其中,职员DTO、岗位DTO、银行卡DTO、外号DTO和部门DTO四者之间的关联关系通过图2中的连接线表示。
通常,在一种情况(记为情况1)下,步骤101执行之前,已存在与当前业务需求对应的数据库,则步骤101具体包括:分析具体的业务需求,根据该业务需求从数据库中拖拽出一个以上的DTO,根据已设置的DTO关联关系信息(这里,可以是预先在数据库管理系统中设置的DTO关联关系信息)建立包含该拖拽出的DTO的元数据模型;在另一种情况(记为情况2)下,在步骤101执行时,还不存在业务需求对应的数据库,则步骤101具体包括:根据当前业务需求创建并配置对应的DTO,之后,根据配置的DTO中的属性字段建立包含该配置的DTO的元数据模型。比如,若根据当前业务需求需要创建并配置图2所示的各个DTO,其中,配置的职员DTO中的属性字段(由于现在该字段并没有被赋值,因此,将其简称为字段)中包含岗位DTO字段、银行卡DTO字段等,则可以知道职员DTO与配置的岗位DTO和银行卡DTO存在关联关系,因此,根据关联关系便可构成图2所示的元数据模型。
需要说明的是,本实施例在情况2时,为便于后续的查询操作,还需要在完成元数据模型建立操作后,根据元数据模型包含的各个DTO生成数据库。这里,生成的数据库与元数据模型中的DTO对应。以图2所示的职员DTO为例,则生成的数据库中就包含了对应职员DTO的数据库表,而该职员DTO中包含的各个属性字段(比如更新时间、分布时间戳等强类型字段)则对应该数据库表中的列。其中,该列便于用户后续根据实际需求输入相应的数据,比如,输入更新时间的值等。
还需要说明的是,本实施例中,在DTO中除了设置强类型字段外,还可设置弱类型字段(记为自由项字段),该自由项字段并不像强类型字段那样明确表示什么意义(比如职员DTO中的更新时间字段明确表示用于更新职员信息的时间),而是为了后续进一步的需求预留一些字段,以便实现后续的进一步需求。比如图2中,可在银行卡DTO中设置一些自由项字段,如具体为自由项0字段至自由项9字段,这些自由项字段目前并不表示明确的意义。
步骤102,根据元数据模型生成对象代码。
这里,步骤102具体包括:为元数据模型中的每一个DTO生成对象代码,其中,针对每一个DTO生成的对象代码实质上是一个类(class)。若元数据模型如图2所示,则本步骤102生成图2所示的元数据模型中所包含的各个DTO的对象代码。
本步骤102可由开发人员手工执行;也可通过预先设置的具有生成代码功能的工具来执行,本发明实施例并不具体限定。
本领域人员知道,在一种情况下,开发人员进行软件开发时所用的数据库与开发出来的产品所用的数据库会出现不同的情况,比如,软件开发时所用的数据库为SQL Server数据库,产品所用的数据库为My SQL或者ORACLE;在另一种情况下,开发出来的产品中不存在数据库的情况;针对这两种情况,本实施例在步骤102执行时,可进一步执行生成建库脚本,以便根据该建库脚本创建对应的数据库。
需要说明的是,如果DTO中设置了自由项字段,本步骤102中生成的该DTO的对象代码中包含了自由项字段代码)。比如,若图2中的银行卡DTO中包含了自由项字段,则生成银行卡DTO的对象代码中包含了自由项字段代码。比如,如果进一步需求银行卡用户的身高,由于银行卡DTO中的强类型字段中不包括身高字段,则本步骤用户可直接将自由项字段代码设置为身高字段代码,并相应修改数据库中对应该自由项字段代码的自由项字段为身高字段。
步骤103,将对象代码编译成业务对象库。
这里,由于对象代码是以文本形式存在的,为便于应用程序使用该对象代码,需要将该对象代码编译成业务对象库。比如,以图2所示的元数据模型为例,在执行本步骤103之前,已生成该模型对应的对象代码;这样,在执行本步骤103时,就将该对象代码编译成业务对象库,其中,该业务对象库中包含了职员业务对象(生成职员DTO的对象代码后所编译成的业务对象)、岗位业务对象(生成岗位DTO的对象代码后所编译成的业务对象)等。
步骤104,当需要查询时,根据当前业务需求在查询代码中使用对应的业务对象来调用预定义的持久化引擎查询接口实现查询操作。
这里,在定义持久化引擎时,可设置一个以上的持久化引擎查询接口,并可设置不同的业务对象对应不同的持久化引擎查询接口。因此,步骤104中在调用预定义的持久化引擎查询接口时需要根据当前的业务对象来执行。由于预定义的持久化引擎能直接与数据库交互,因此,用户就不需要关心与数据库的交互,而是直接操作持久化引擎即可,具体为:根据当前需求编译对象OQL语句,将该OQL语句作为持久化引擎提供的查询接口即可;由于用户不与数据库交互,因此,该编译的OQL语句就不会涉及到数据库信息(比如数据库表名、数据库表字段等),而是仅涉及用户需要查询的业务对象信息。
因此,步骤104中,根据当前业务需求在查询代码中使用对应的业务对象来调用预定义的持久化引擎查询接口实现查询操作具体为:根据当前业务需求在查询代码中使用对应的业务对象编写OQL语句,将该OQL语句作为预定义的持久化引擎查询接口的参数,之后,触发该查询操作;当持久化引擎在持久化引擎查询接口上接收到该触发后,执行查询操作。
需要说明的是,本发明实施例中,为便于持久化引擎执行查询操作,可在持久化引擎首次与数据库交互时,读取并缓存该数据库中的元数据;其中,元数据为对业务对象、业务对象属性和该业务对象与其他业务对象的关联关系的描述;优选地,本发明实施例中持久化引擎并非只针对一个数据库进行查询操作,其可支持多个数据库的查询操作;为便于区分缓存的不同数据库的元数据,本实施例在缓存元数据时可按照不同的帐套来隔离不同数据库的元数据。通常,数据库中的元数据并非一成不变的,当持久化引擎获知元数据被修改或者缓存同步被触发时,还需相应地更新缓存的元数据(具体为重新加载数据库中对应的元数据)。如此,持久化引擎执行查询操作具体可包括:判断当前是否缓存了需要查询的业务数据,如果是,通过深度克隆的方式提供该业务数据;否则,从已缓存的元数据中查找要使用的业务对象对应的元数据,如果查找到,根据该查找到的元数据去数据库中获取并提供相应的业务数据。
优选地,本实施例中,在判断出当前未缓存需要查询的业务数据时,可在持久化引擎提供出相应的业务数据时,进一步按照预设的缓存原则缓存该业务数据。其中,预设的缓存原则具体实现时可有多种形式,比如大池缓存或者临时缓存等,这里并不具体限定。
其中,大池缓存(Global Cache),是一个全局业务对象缓存池,主要是根据预设的缓存策略缓存数据,其中,该预设的缓存策略可以依照被引用量、被操作的频繁度、和该业务数据量多少的大小中的任意一个或者两个以上的任意组合等情况制定缓存策略。在缓存操作中,还同步采用最为安全的更新触发清除业务对象缓存池操作,具体类似EJB里面的实体Bean缓存方式。
临时缓存(Temp Cache)主要是针对相互递归引用所产生的重复查询而设计的,在临时缓存中,针对主键相同的对象在一个事务上查询时不会再与数据库交互,而是直接使用深度克隆(复制)产生相同对象。
为便于本实施例的查询操作更加简单,本实施例可预先设置用于快速查询的OQL语句,具体如下:
{sysfield} 查询所有常规列;
{userdine_and_freeitem} 查询自定义项和自由项列;
{userdefine} 查询自定义项列;
{a11} 查询所有的项,等同于用于表示所有的“*”符号;
{freeitem} 查询自由项列;
{属性1,属性2……,属性n}或{(属性1,属性2……,属性n)} 查询指定的属性列;
{!(属性1,属性2……,属性n)} 查询不包含指定属性列的其它属性,其中,“!”表示非的意思;
orderdto.*,orderdto.customer.{id,code,name} 查询订单所有列以及引用客户的id、code、name列;
orderdto.id,orderdto.{freeitem}, 查询订单id以及订单的自由项;
orderdto.customer.{!(updated,updatedby,ts)} 查询订单引用客户的除updated、updatedby、ts外的其它列;
需要说明的是,为便于持久化引擎识别上述用于快速查询的OQL语句,还需要在该持久化引擎中设置该用于快速查询的OQL语句的描述指令。如此,当执行查询操作时,可直接、快速提供相应的查询结果。
可见,在本步骤中,由于持久化引擎提供了完整的面向对象语法的查询方法,因此就无需现有技术中用户需要编译复杂SQL语句来实现查询操作,而是直接利用简单的面向对象的OQL语句执行查询操作。
为便于本实施例更加清楚,下面举一个应用实施例进行描述。
参见图3,图3为本发明实施例的订单模型示意图。在图3中,元数据模型具体为图3所示的订单模型,其中,该订单模型包含了客户DTO、订单DTO、明细DTO和产品DTO,并显示了该四者之间的关联关系(该关联关系在图3中用连接线表示)。如此,根据该订单模型生成对象代码,具体为生成客户类、订单类、明细类和产品类。由于生成的对象代码以文本形式存在,因此,这里还需将各个类编译成业务对象库,如此,该业务对象库中包含了客户业务对象、订单业务对象、明细业务对象和产品业务对象;当需要查询时,若需要针对图3中的客户业务对象和订单业务对象进行查询操作,则在查询代码中使用该客户业务对象和订单业务对象编写OQL语句,比如,查询订单明细产品价格大于30的订单客户名称和金额,则在查询代码中编写的OQL语句为:
Orderdto.money as orderMoney,OrderDTO.customer.name customernamewhere OrderDTO.Items.Product.price>30。
将该OQL语句作为预定义的持久化引擎查询接口的参数,之后,触发该查询操作;当持久化引擎接收到该触发后,执行查询操作,具体执行的查询操作可参见图1所示的步骤104。
如此,实现了本发明实施例提供的对象查询方法。
需要说明的是,本实施例中利用步骤101建立的元数据模型,还可执行持久化操作中的新建、更新和删除操作。以对一业务对象比如职员personDTO执行新建操作为例,则首先利用该person DTO新建(New)一个实例对象,然后赋值给该新建的实例化对象;将该实例化对象作为持久化引擎提供的新建接口的参数;由持久化引擎自动完成与数据库的交互。其他操作如更新和删除操作类似,这里不再赘述。
上述对本发明提供的方法进行了描述,下面对本发明实施例提供的装置进行描述。
参见图4,图4为本发明实施例提供的对象查询装置结构图,如图4所示,该装置包括:数据设计模块401和持久化引擎模块402;其中,
数据设计模块401用于根据业务需求建立元数据模型;以及生成所述元数据模型对应的对象代码;
持久化引擎模块402用于根据所述对象代码和预定义的持久化引擎查询接口执行查询操作。
优选地,所述元数据模型中包含一个以上的数据传输对象DTO;
数据设计模块401包括:
判断单元4011,用于判断当前是否存在与所述业务需求对应的数据库;
第一模型生成单元4012,用于当判断单元4011判断出当前存在与所述业务需求对应的数据库时,根据所述业务需求从数据库中拖拽出一个以上的DTO,根据已设置的DTO关联关系信息建立包含拖拽出的DTO的元数据模型;
第二模型生成单元4013,用于当判断单元4011判断出当前不存在与所述业务需求对应的数据库时,根据所述业务需求配置DTO;根据配置的DTO中的属性字段建立包含该配置的DTO的元数据模型。
优选地,第二模型生成单元4012完成建立元数据模型后,进一步根据该元数据模型生成数据库。
优选地,持久化引擎模块402包括:
编译单元4021,用于将所述对象代码编译成业务对象库;其中,该业务对象库包含一个以上的业务对象;
查询单元4022,用于在业务逻辑代码中根据当前需求使用编译单元4021编译出的业务对象库中对应的业务对象编写OQL语句,将该OQL语句作为预定义的持久化引擎查询接口的参数实现查询操作。
具体地,查询单元4022在接收到查询触发后,判断当前是否缓存了需要查询的业务数据,如果是,将缓存中存储的业务数据通过深度克隆的方式提供;否则,从已缓存的元数据中查找要使用的业务对象对应的元数据,如果查找到,根据该查找到的元数据去数据库中获取并提供相应的业务数据。
由以上技术方案可以看出,本发明实施例提供的对象查询方法和装置中,并不是由用户与数据库交互的,而是由预定义的持久化引擎与数据库进行交互,这样,用户就不需要现有技术中编译复杂SQL语句编写查询语句,而是直接通过面向对象的预定义的持久化引擎中接口执行查询操作;
进一步地,本发明实施例通过将业务对象信息(比如业务对象数据,或者业务对象的元数据)缓存在持久化引擎中,该持久化引擎中存储的信息都是面向对象的,这样,也大大提高了对数据库查询操作的效率,并非现有技术中用户每次执行查询操作时都执行与数据库交互的操作,减少数据库的交互压力。可以看出,相比于现有技术,本发明实施例提供的方法更加简单、快捷。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (6)
1.一种对象查询方法,其特征在于,该方法包括:
步骤A,根据业务需求建立元数据模型;生成所述元数据模型对应的对象代码;
步骤B,根据所述对象代码和预定义的持久化引擎查询接口执行查询操作;
所述元数据模型中包含一个以上的数据传输对象DTO;
所述步骤A中根据业务需求建立元数据模型包括:
步骤A1,若当前存在与所述业务需求对应的数据库,则根据所述业务需求从数据库中拖拽出一个以上的DTO,根据已设置的DTO关联关系信息建立包含拖拽出的DTO的元数据模型;
步骤A2,若当前不存在与所述业务需求对应的数据库,根据所述业务需求配置DTO;根据配置的DTO中的属性字段建立包含该配置的DTO的元数据模型;
所述步骤B包括:
步骤B1,将所述对象代码编译成业务对象库;其中,该业务对象库包含一个以上的业务对象;
步骤B2,在业务逻辑代码中根据当前需求使用对应的业务对象编写对象查询语言OQL语句,将该OQL语句作为预定义的持久化引擎查询接口的参数实现查询操作。
2.根据权利要求1所述的方法,其特征在于,在步骤A2完成建立元数据模型后,进一步包括:根据该元数据模型生成对应的数据库。
3.根据权利要求1所述的方法,其特征在于,所述步骤B2中将该OQL语句作为预定义的持久化引擎查询接口的参数实现查询操作包括:
步骤B21,预定义的持久化引擎在所述持久化引擎查询接口上接收到查询触发后,判断当前是否缓存了需要查询的业务数据,如果是,执行步骤B22;否则,执行步骤B23;
步骤B22,通过深度克隆的方式提供该业务数据;
步骤B23,从已缓存的元数据中查找要使用的业务对象对应的元数据,如果查找到,根据该查找到的元数据去数据库中获取并提供相应的业务数据。
4.一种对象查询装置,其特征在于,该装置包括:数据设计模块和持久化引擎模块;其中,
所述数据设计模块用于根据业务需求建立元数据模型;以及生成所述元数据模型对应的对象代码;
所述持久化引擎模块用于根据所述对象代码和预定义的持久化引擎查询接口执行查询操作;
所述元数据模型中包含一个以上的数据传输对象DTO;
所述数据设计模块包括:
判断单元,用于判断当前是否存在与所述业务需求对应的数据库;
第一模型生成单元,用于当所述判断单元判断出当前存在与所述业务需求对应的数据库时,则根据所述业务需求从数据库中拖拽出一个以上的DTO,根据已设置的DTO关联关系信息建立包含拖拽出的DTO的元数据模型;
第二模型生成单元,用于当所述判断单元判断出当前不存在与所述业务需求对应的数据库时,根据所述业务需求配置DTO;根据配置的DTO中的属性字段建立包含该配置的DTO的元数据模型;
所述持久化引擎模块包括:
编译单元,用于将所述对象代码编译成业务对象库;其中,该业务对象库包含一个以上的业务对象;
查询单元,用于在业务逻辑代码中根据当前需求使用所述编译单元编译出的业务对象库中对应的业务对象编写对象查询语言OQL语句,将该OQL语句作为预定义的持久化引擎查询接口的参数实现查询操作。
5.根据权利要求4所述的装置,其特征在于,所述第二模型生成单元完成建立元数据模型后,进一步根据该元数据模型生成数据库。
6.根据权利要求4所述的装置,其特征在于,所述查询单元在接收到查询触发后,
若当前缓存方式为业务数据缓存,则判断当前是否缓存了需要查询的业务数据,如果是,将缓存中存储的业务数据通过深度克隆的方式提供;否则,从已缓存的元数据中查找要使用的业务对象对应的元数据,如果查找到,根据该查找到的元数据去数据库中获取并提供相应的业务数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100873242A CN101582079B (zh) | 2009-06-23 | 2009-06-23 | 一种对象查询方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100873242A CN101582079B (zh) | 2009-06-23 | 2009-06-23 | 一种对象查询方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101582079A CN101582079A (zh) | 2009-11-18 |
CN101582079B true CN101582079B (zh) | 2011-01-05 |
Family
ID=41364227
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009100873242A Expired - Fee Related CN101582079B (zh) | 2009-06-23 | 2009-06-23 | 一种对象查询方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101582079B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106776725A (zh) * | 2016-11-18 | 2017-05-31 | 北京锐安科技有限公司 | 一种全文查询方法和装置 |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102479244A (zh) * | 2010-11-30 | 2012-05-30 | 英业达股份有限公司 | 以容器暂存目标数据与未查找数据的查找系统及其方法 |
US9355145B2 (en) | 2011-01-25 | 2016-05-31 | Hewlett Packard Enterprise Development Lp | User defined function classification in analytical data processing systems |
US20130238548A1 (en) * | 2011-01-25 | 2013-09-12 | Muthian George | Analytical data processing |
CN103309904B (zh) * | 2012-03-16 | 2016-12-07 | 阿里巴巴集团控股有限公司 | 一种生成数据仓库etl 代码的方法及装置 |
CN102750382B (zh) * | 2012-06-28 | 2016-08-03 | 上海寰创通信科技股份有限公司 | 一种用于网管系统的关系型数据查询方法 |
US9396240B2 (en) * | 2013-12-03 | 2016-07-19 | Business Objects Software Ltd. | Extreme visualization enabling extension for large data sets |
CN103631596B (zh) * | 2013-12-05 | 2017-09-05 | 用友优普信息技术有限公司 | 业务对象数据录入及更新规则的配置装置和配置方法 |
CN105701243A (zh) * | 2016-02-26 | 2016-06-22 | 广州品唯软件有限公司 | 一种基于元数据模型的管控方法及装置 |
CN106339267B (zh) * | 2016-09-08 | 2019-11-01 | 华为技术有限公司 | 一种对象查询方法及服务端 |
CN108959489A (zh) * | 2018-06-23 | 2018-12-07 | 上海泽阳智能科技有限公司 | 一种高效的数据交换和数据源隔离方法 |
CN109669951B (zh) * | 2018-11-09 | 2020-12-04 | 金蝶软件(中国)有限公司 | 对象查询方法、装置、计算机设备和存储介质 |
CN110008230B (zh) * | 2019-01-25 | 2021-04-27 | 畅捷通信息技术股份有限公司 | 对象查询方法及装置、计算机可读存储介质 |
CN111949692A (zh) * | 2020-07-30 | 2020-11-17 | 合肥森亿智能科技有限公司 | 基于dto的自定义指标配置方法、系统、设备和介质 |
-
2009
- 2009-06-23 CN CN2009100873242A patent/CN101582079B/zh not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106776725A (zh) * | 2016-11-18 | 2017-05-31 | 北京锐安科技有限公司 | 一种全文查询方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN101582079A (zh) | 2009-11-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101582079B (zh) | 一种对象查询方法和装置 | |
EP3304286B1 (en) | Data binding dependency analysis | |
CA2819008C (en) | Method and system for displaying selectable autocompletion suggestions and annotations in mapping tool | |
US8635253B2 (en) | Decorated model architecture for efficient model-driven application development | |
US20080244510A1 (en) | Visual creation of object/relational constructs | |
US8838654B1 (en) | Data modeling system for runtime schema extensibility | |
US8881127B2 (en) | Systems and methods to automatically generate classes from API source code | |
US11689609B2 (en) | Mechanism for webpage composition | |
US20120158795A1 (en) | Entity triggers for materialized view maintenance | |
CN106407170A (zh) | 数据报表快速生成方法及系统 | |
US9104724B2 (en) | Dynamic bridging of application and data servers | |
US20110252049A1 (en) | Function execution using sql | |
US9880815B2 (en) | SQL visualizer | |
US10509632B2 (en) | Model augmentation in a model-driven application development environment | |
CN106951254B (zh) | 支付系统中相似业务功能模块复用的方法及装置 | |
US8413109B2 (en) | Systems and methods for metamodel transformation | |
CN110750553A (zh) | 一种在业务管理系统中对数据进行自定义导出的方法 | |
CN103678396A (zh) | 一种基于数据模型的数据备份方法和装置 | |
EP1909170B1 (en) | Method and system for automatically generating a communication interface | |
US9280361B2 (en) | Methods and systems for a real time transformation of declarative model and layout into interactive, digital, multi device forms | |
EP4058900B1 (en) | Systems and methods for generation and application of schema-agnostic query templates | |
US10460015B1 (en) | Assimilation in multi model webpage composition | |
CN112506937A (zh) | 一种数据库模型的在线配置方法、装置、设备和介质 | |
JP5190241B2 (ja) | 情報処理装置、情報処理方法及びプログラム | |
Grandi et al. | CSI TE.-CNR--DEIS |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C56 | Change in the name or address of the patentee |
Owner name: YONYOU NETWORK TECHNOLOGY CO., LTD. Free format text: FORMER NAME: UFIDA SOFTWARE CO., LTD. |
|
CP03 | Change of name, title or address |
Address after: 100094 Haidian District North Road, Beijing, No. 68 Patentee after: Yonyou Network Technology Co., Ltd. Address before: 100094 Beijing city Haidian District North Road No. 68, UFIDA Software Park Patentee before: UFIDA Software Co., Ltd. |
|
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110105 Termination date: 20180623 |