CN112181996B - 关系数据库统一数据存取中间件方法及系统 - Google Patents

关系数据库统一数据存取中间件方法及系统 Download PDF

Info

Publication number
CN112181996B
CN112181996B CN202010907806.4A CN202010907806A CN112181996B CN 112181996 B CN112181996 B CN 112181996B CN 202010907806 A CN202010907806 A CN 202010907806A CN 112181996 B CN112181996 B CN 112181996B
Authority
CN
China
Prior art keywords
list
data
database
batch
attribute
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.)
Active
Application number
CN202010907806.4A
Other languages
English (en)
Other versions
CN112181996A (zh
Inventor
梁正和
赵旭杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hohai University HHU
Original Assignee
Hohai University HHU
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hohai University HHU filed Critical Hohai University HHU
Priority to CN202010907806.4A priority Critical patent/CN112181996B/zh
Publication of CN112181996A publication Critical patent/CN112181996A/zh
Application granted granted Critical
Publication of CN112181996B publication Critical patent/CN112181996B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases

Abstract

本发明公开了关系数据库统一数据存取中间件方法及系统,该方法包括:步骤SS1:JavaBean对象通过统一数据存取中间件UnifyDataAccess提供的java注解,表达相关的元数据;步骤SS2:数据对象获取步骤;步骤SS3:批量对象持久化步骤;步骤SS4:SQL语句执行步骤。本发明可以实现从简单对象到复杂对象、主明细对象实现从关系到对象的转换,在数据量比较大的时候,可以分批获取;在数据量较小的时候也可以一次全部获取;其次是可以完成从简单对象到复杂对象、主明细对象到数据库关系转换,实现各类对象的数据持久化。通过配置支持对象于Redis内存数据库cache,在对象持久化的时候自动维护cache和关系库的一致性。

Description

关系数据库统一数据存取中间件方法及系统
技术领域
本发明涉及一种关系数据库统一数据存取中间件方法及系统,属于计算机应用技术领域。
背景技术
关系数据库数据的访问和持久化是应用系统软件开发的核心内容,是应用程序开发的重要组成部分,是层次化应用软件中重要层次,在大型应用软件的开发中需要组织专门的队伍承担。目前关系数据库数据的访问和持久化的框架繁多,常用的有SpringHibernate、Mybatis、JPA、EJB等,这些框架需要用户开发大量的代码,还需要很大的工作量。现有的统一数据存取中间件(UnifyDataAccess)是一个完成关系数据库数据访问和持久化的中间件,支持Redis内存数据库cache。完成从简单对象到复杂对象、主明细对象的O/R转换,自动实现对访问中的所有对象实例在内存数据库中缓存,下一次访问时可以直接从内存数据库缓存中直接获取,大大提高访问速度,命中率100%。在数据持久化时,实现内存数据库缓存对象自动更新,自动维持内存数据库缓存和关系数据库中数据一致性。
发明内容
本发明所要解决的技术问题是克服现有技术的缺陷,提供一种统一数据存取中间件方法及系统,其主要功能首先是数据访问,从简单对象到复杂对象、主明细对象实现从关系到对象的转换,在数据量比较大的时候,可以分批获取;在数据量较小的时候也可以一次全部获取;其次是可以完成从简单对象到复杂对象、主明细对象到数据库关系转换,实现各类对象的数据持久化。
为解决上述技术问题,本发明提供关系数据库统一数据存取中间件方法,包括:
步骤SS1:JavaBean对象通过统一数据存取中间件UnifyDataAccess提供的java注解,表达相关的元数据;
步骤SS2:数据对象获取步骤;
步骤SS3:批量对象持久化步骤;
步骤SS4:SQL语句执行步骤。
作为一种较佳的实施例,所述步骤SS1中的元数据具体包括:
对象级元数据@UnifyAccessDataset和属性元数据@Persistent、@Prompt、@Referrence、
@RefCondition;
@UnifyAccessDataset注解:描述整个java对象和关系数据库数据集的关系,该注解表达数据源、对应的主数据库表、数据集SQL语句、SQL中是否有where条件以及对象描述;具体格式如下:
步骤SS11:@UnifyAccessDataset注解,用于执行:(datasource=(<数据源名称>),table=(<主表名>);basedsql=(<SQL语句>),haswhere=(<true|false>),description=(<描述>));
@Persistent注解:描述对象属性和关系数据库中数据属性的对应关系,包括:field字段名,默认数据库表中字段名和对象属性名是一致的,不一致时需要注解;fieldtype字段类型,默认数据库表中字段类型和对象属性类型是一致的,不一致时需要注解;primarykey说明该属性对应的数据库字段是否主键,是主键时需要注解;isjoined说明该属性对应的数据库字段是关联字段,是关联字段时需要注解;format当对象属性数据格式需要比较特殊时,尤其是日期格式,通过该注解中间件会将数据库的数据按照要求的格式转换;具体格式如下:
@Persistent(field=(<数据库字段名>),fieldtype=(<数据库字段类型>),primarykey=(<true|false>),isjoined=(<true|false>),format=(<格式串>));
@Prompt注解,具体包括:表达数据对象在应用界面中的显示,包括:显示顺序sqn、显示文字fieldDesc、是否显示visible、显示宽度viewWidth;具体格式如下:
@Prompt(sqn=(<顺序号>),fieldDesc=(<提示>),visible=(<true|false>),viewWidth=(<显示宽度>;
@Referrence注解:当java对象是复杂对象时,例如主明细对象,主对象中的某个属性是明细对象的列表,通过该注解描述明细参考对象列表。包括:objectname描述参考对象名称及对象路径;refattribute参考属性名称;condlist参考条件列表;orderby参考对象实例列表排序要求;readonly是否只读,无需持久化处理;和@RefCondition注解配合,@RefCondition描述了单个参考条件;具体格式如下:
@Referrence(objectname=(<参考对象路径及对象名称>),refattribute=(<参考对象中的属性名称>),condlist=(<参考条件列表>),orderby=(<排序字段列表>),readonly=(<true|false>));
<参考条件列表>中的每一个条件由@RefCondition注解描述。
作为一种较佳的实施例,所述步骤SS2具体包括:
步骤SS21:通过Open方法打开一个数据集,Open表达式为:Open(<对象路径>,<对象名称>,<分批获取时的一次获取最多数量,全部一次获取时设0>,<条件表达式>,<排序字段列表>);
步骤SS22:getAll(),即一次性全部获取所有对象列表;
步骤SS23:如果是分批获取,那么open方法中必须给出一批对象数量参数,next()是向后获取一批对象列表;previous()是向前获取一批对象列表;go(<页号>)表示获取数据集中任意一页对象列表;isEof()表示向后获取是否结束;isBof()表示向前获取是否结束;
步骤SS24:单个对象的持久化步骤,具体包括:
1)addPersistent Object(<java对象>),即向数据库中添加单个对象实例;2)setPersistent Object(<java对象>),即修改单个对象实例;3)delPersistent Object(<java对象>),即删除单个对象实例。
作为一种较佳的实施例,所述步骤SS3具体包括:
步骤SS31:batch PersistentObjects(<对象列表>)步骤,即批量向数据库中添加对象实例,内部采用批量SQL语句提交,提高持久化速度和效率;
步骤SS32:batchSet PersistentObjects(<对象列表>)步骤,即批量修改对象实例列表;
步骤SS33:batchDel PersistentObjects(<对象列表>)步骤,即批量删除对象实例列表;
步骤SS34:delAll()步骤,即一次性删除数据集所有对象实例。
作为一种较佳的实施例,所述步骤SS4具体包括:执行SQL语句的方法分三个大类;
第一大类是execSql执行任意SQL语句,没有结果返回,根据不同的参数类型方法重载,格式如下:
execSql(<数据源名称>,<SQL语句>,<参数列表>);
第二大类是有返回数据集的execSqlQuery方法,根据不同参数和不同的返回结果方法重载,格式如下:
<结果集>execSqlQuery(<数据源名称>,<SQL语句>,<结果集处理类>);
第三大类返回单个基本对象值的sqlQueryFor<Int|Long|Double|Object|Map>方法,根据不同参数和不同的返回结果方法重载,格式如下:
sqlQueryFor<Int|Long|Double|Object|Map>(<数据源名称>,<SQL语句>,<参数列表>,<结果集处理类>)。
本发明还提出关系数据库统一数据存取中间件系统,包括:
元数据表达模块,用于执行:JavaBean对象通过统一数据存取中间件UnifyDataAccess提供的java注解,表达相关的元数据;
数据对象获取模块,用于执行:获取数据对象;
批量对象持久化模块,用于执行:向数据库中批量添加所述数据对象;
SQL语句执行模块,用于执行:执行SQL语句。
作为一种较佳的实施例,所述元数据表达模块具体包括:对象级元数据@UnifyAccessDataset和属性元数据@Persistent、@Prompt、@Referrence、@RefCondition;
所述@UnifyAccessDataset注解:描述整个java对象和关系数据库数据集的关系,该注解表达数据源、对应的主数据库表、数据集SQL语句、SQL中是否有where条件以及对象描述;具体格式如下:
@UnifyAccessDataset注解,用于执行:(datasource=(<数据源名称>),table=(<主表名>);basedsql=(<SQL语句>),haswhere=(<true|false>),description=(<描述>));
@Persistent注解:描述对象属性和关系数据库中数据属性的对应关系,包括:field字段名,默认数据库表中字段名和对象属性名是一致的,不一致时需要注解;fieldtype字段类型,默认数据库表中字段类型和对象属性类型是一致的,不一致时需要注解;primarykey说明该属性对应的数据库字段是否主键,是主键时需要注解;isjoined说明该属性对应的数据库字段是关联字段,是关联字段时需要注解;format当对象属性数据格式需要比较特殊时,尤其是日期格式,通过该注解中间件会将数据库的数据按照要求的格式转换;具体格式如下:
@Persistent(field=(<数据库字段名>),fieldtype=(<数据库字段类型>),primarykey=(<true|false>),isjoined=(<true|false>),format=(<格式串>));
@Prompt注解,具体包括:表达数据对象在应用界面中的显示,包括:显示顺序sqn、显示文字fieldDesc、是否显示visible、显示宽度viewWidth;具体格式如下:
@Prompt(sqn=(<顺序号>),fieldDesc=(<提示>),visible=(<true|false>),viewWidth=(<显示宽度>;
@Referrence注解:当java对象是复杂对象时,例如主明细对象,主对象中的某个属性是明细对象的列表,通过该注解描述明细参考对象列表。包括:objectname描述参考对象名称及对象路径;refattribute参考属性名称;condlist参考条件列表;orderby参考对象实例列表排序要求;readonly是否只读,无需持久化处理;和@RefCondition注解配合,@RefCondition描述了单个参考条件;具体格式如下:
@Referrence(objectname=(<参考对象路径及对象名称>),refattribute=(<参考对象中的属性名称>),condlist=(<参考条件列表>),orderby=(<排序字段列表>),readonly=(<true|false>));
<参考条件列表>中的每一个条件由@RefCondition注解描述。
作为一种较佳的实施例,所述获取数据对象具体包括:
通过Open方法打开一个数据集,Open表达式为:Open(<对象路径>,<对象名称>,<分批获取时的一次获取最多数量,全部一次获取时设0>,<条件表达式>,<排序字段列表>);
getAll(),即一次性全部获取所有对象列表;
如果是分批获取,那么open方法中必须给出一批对象数量参数,next()是向后获取一批对象列表;previous()是向前获取一批对象列表;go(<页号>)表示获取数据集中任意一页对象列表;isEof()表示向后获取是否结束;isBof()表示向前获取是否结束;
单个对象的持久化步骤,具体包括:
1)addPersistent Object(<java对象>),即向数据库中添加单个对象实例;2)setPersistent Object(<java对象>),即修改单个对象实例;3)delPersistent Object(<java对象>),即删除单个对象实例。
作为一种较佳的实施例,所述批量对象持久化模块具体包括:
Batch PersistentObjects(<对象列表>)步骤,即批量向数据库中添加对象实例,内部采用批量SQL语句提交,提高持久化速度和效率;
batchSet PersistentObjects(<对象列表>)步骤,即批量修改对象实例列表;
batchDel PersistentObjects(<对象列表>)步骤,即批量删除对象实例列表;
delAll()步骤,即一次性删除数据集所有对象实例。
作为一种较佳的实施例,所述SQL语句执行模具体包括:执行SQL语句的方法分三个大类;
第一大类是execSql执行任意SQL语句,没有结果返回,根据不同的参数类型方法重载,格式如下:
execSql(<数据源名称>,<SQL语句>,<参数列表>);
第二大类是有返回数据集的execSqlQuery方法,根据不同参数和不同的返回结果方法重载,格式如下:
<结果集>execSqlQuery(<数据源名称>,<SQL语句>,<结果集处理类>);
第三大类返回单个基本对象值的sqlQueryFor<Int|Long|Double|Object|Map>方法,根据不同参数和不同的返回结果方法重载,格式如下:
sqlQueryFor<Int|Long|Double|Object|Map>(<数据源名称>,<SQL语句>,<参数列表>,<结果集处理类>)。
本发明所达到的有益效果:第一,本发明的统一数据存取中间件(UnifyDataAccess)的方法包括数据对象获取,一次全部获取和分批获取方法,数据持久化除了包括单个对象的添加、修改、删除及保存方法,还支持批量对象的添加、修改、删除及保存方法;第二,本发明的统一数据存取中间件系统也支持任何SQL语句的执行;第三,本发明提出的一种关系数据库统一数据存取中间件系统及方法,该中间件完成关系数据库数据从访问到持久化的统一数据存取;从简单对象到复杂对象、主明细对象实现从关系到对象的转换,在数据量比较大的时候,可以分批获取;在数据量较小的时候也可以一次全部获取;其次是可以完成从简单对象到复杂对象、主明细对象到数据库关系转换,实现各类对象的数据持久化。通过配置支持对象于Redis内存数据库cache,在对象持久化的时候自动维护cache和关系库的一致性。
附图说明
图1是本发明的关系数据库统一数据存取中间件方法的流程图。
具体实施方式
下面结合附图对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
实施例1:如图1所示,关系数据库统一数据存取中间件方法,包括:
步骤SS1:JavaBean对象通过统一数据存取中间件UnifyDataAccess提供的java注解,表达相关的元数据;
步骤SS2:数据对象获取步骤;
步骤SS3:批量对象持久化步骤;
步骤SS4:SQL语句执行步骤。
可选的,所述步骤SS1中的元数据具体包括:
对象级元数据@UnifyAccessDataset和属性元数据@Persistent、@Prompt、@Referrence、
@RefCondition;
@UnifyAccessDataset注解:描述整个java对象和关系数据库数据集的关系,该注解表达数据源、对应的主数据库表、数据集SQL语句、SQL中是否有where条件以及对象描述;具体格式如下:
步骤SS11:@UnifyAccessDataset注解,用于执行:(datasource=(<数据源名称>),table=(<主表名>);basedsql=(<SQL语句>),haswhere=(<true|false>),description=(<描述>));
@Persistent注解:描述对象属性和关系数据库中数据属性的对应关系,包括:field字段名,默认数据库表中字段名和对象属性名是一致的,不一致时需要注解;fieldtype字段类型,默认数据库表中字段类型和对象属性类型是一致的,不一致时需要注解;primarykey说明该属性对应的数据库字段是否主键,是主键时需要注解;isjoined说明该属性对应的数据库字段是关联字段,是关联字段时需要注解;format当对象属性数据格式需要比较特殊时,尤其是日期格式,通过该注解中间件会将数据库的数据按照要求的格式转换;具体格式如下:
@Persistent(field=(<数据库字段名>),fieldtype=(<数据库字段类型>),primarykey=(<true|false>),isjoined=(<true|false>),format=(<格式串>));
@Prompt注解,具体包括:表达数据对象在应用界面中的显示,包括:显示顺序sqn、显示文字fieldDesc、是否显示visible、显示宽度viewWidth;具体格式如下:
@Prompt(sqn=(<顺序号>),fieldDesc=(<提示>),visible=(<true|false>),viewWidth=(<显示宽度>;
@Referrence注解:当java对象是复杂对象时,例如主明细对象,主对象中的某个属性是明细对象的列表,通过该注解描述明细参考对象列表。包括:objectname描述参考对象名称及对象路径;refattribute参考属性名称;condlist参考条件列表;orderby参考对象实例列表排序要求;readonly是否只读,无需持久化处理;和@RefCondition注解配合,@RefCondition描述了单个参考条件;具体格式如下:
@Referrence(objectname=(<参考对象路径及对象名称>),refattribute=(<参考对象中的属性名称>),condlist=(<参考条件列表>),orderby=(<排序字段列表>),readonly=(<true|false>));
<参考条件列表>中的每一个条件由@RefCondition注解描述。
可选的,所述步骤SS2具体包括:
步骤SS21:通过Open方法打开一个数据集,Open表达式为:Open(<对象路径>,<对象名称>,<分批获取时的一次获取最多数量,全部一次获取时设0>,<条件表达式>,<排序字段列表>);
步骤SS22:getAll(),即一次性全部获取所有对象列表;
步骤SS23:如果是分批获取,那么open方法中必须给出一批对象数量参数,next()是向后获取一批对象列表;previous()是向前获取一批对象列表;go(<页号>)表示获取数据集中任意一页对象列表;isEof()表示向后获取是否结束;isBof()表示向前获取是否结束;
步骤SS24:单个对象的持久化步骤,具体包括:
1)addPersistent Object(<java对象>),即向数据库中添加单个对象实例;2)setPersistent Object(<java对象>),即修改单个对象实例;3)delPersistent Object(<java对象>),即删除单个对象实例。
作为一种较佳的实施例,所述步骤SS3具体包括:
步骤SS31:batch PersistentObjects(<对象列表>)步骤,即批量向数据库中添加对象实例,内部采用批量SQL语句提交,提高持久化速度和效率;
步骤SS32:batchSet PersistentObjects(<对象列表>)步骤,即批量修改对象实例列表;
步骤SS33:batchDel PersistentObjects(<对象列表>)步骤,即批量删除对象实例列表;
步骤SS34:delAll()步骤,即一次性删除数据集所有对象实例。
可选的,所述步骤SS4具体包括:执行SQL语句的方法分三个大类;
第一大类是execSql执行任意SQL语句,没有结果返回,根据不同的参数类型方法重载,格式如下:
execSql(<数据源名称>,<SQL语句>,<参数列表>);
第二大类是有返回数据集的execSqlQuery方法,根据不同参数和不同的返回结果方法重载,格式如下:
<结果集>execSqlQuery(<数据源名称>,<SQL语句>,<结果集处理类>);
第三大类返回单个基本对象值的sqlQueryFor<Int|Long|Double|Object|Map>方法,根据不同参数和不同的返回结果方法重载,格式如下:
sqlQueryFor<Int|Long|Double|Object|Map>(<数据源名称>,<SQL语句>,<参数列表>,<结果集处理类>)。
实施例2:本发明还提出关系数据库统一数据存取中间件系统,包括:
元数据表达模块,用于执行:JavaBean对象通过统一数据存取中间件UnifyDataAccess提供的java注解,表达相关的元数据;
数据对象获取模块,用于执行:获取数据对象;
批量对象持久化模块,用于执行:向数据库中批量添加所述数据对象;
SQL语句执行模块,用于执行:执行SQL语句。
可选的,所述元数据表达模块具体包括:对象级元数据@UnifyAccessDataset和属性元数据@Persistent、@Prompt、@Referrence、@RefCondition;
所述@UnifyAccessDataset注解:描述整个java对象和关系数据库数据集的关系,该注解表达数据源、对应的主数据库表、数据集SQL语句、SQL中是否有where条件以及对象描述;具体格式如下:
@UnifyAccessDataset注解,用于执行:(datasource=(<数据源名称>),table=(<主表名>);basedsql=(<SQL语句>),haswhere=(<true|false>),description=(<描述>));
@Persistent注解:描述对象属性和关系数据库中数据属性的对应关系,包括:field字段名,默认数据库表中字段名和对象属性名是一致的,不一致时需要注解;fieldtype字段类型,默认数据库表中字段类型和对象属性类型是一致的,不一致时需要注解;primarykey说明该属性对应的数据库字段是否主键,是主键时需要注解;isjoined说明该属性对应的数据库字段是关联字段,是关联字段时需要注解;format当对象属性数据格式需要比较特殊时,尤其是日期格式,通过该注解中间件会将数据库的数据按照要求的格式转换;具体格式如下:
@Persistent(field=(<数据库字段名>),fieldtype=(<数据库字段类型>),primarykey=(<true|false>),isjoined=(<true|false>),format=(<格式串>));
@Prompt注解,具体包括:表达数据对象在应用界面中的显示,包括:显示顺序sqn、显示文字fieldDesc、是否显示visible、显示宽度viewWidth;具体格式如下:
@Prompt(sqn=(<顺序号>),fieldDesc=(<提示>),visible=(<true|false>),viewWidth=(<显示宽度>;
@Referrence注解:当java对象是复杂对象时,例如主明细对象,主对象中的某个属性是明细对象的列表,通过该注解描述明细参考对象列表。包括:objectname描述参考对象名称及对象路径;refattribute参考属性名称;condlist参考条件列表;orderby参考对象实例列表排序要求;readonly是否只读,无需持久化处理;和@RefCondition注解配合,@RefCondition描述了单个参考条件;具体格式如下:
@Referrence(objectname=(<参考对象路径及对象名称>),refattribute=(<参考对象中的属性名称>),condlist=(<参考条件列表>),orderby=(<排序字段列表>),readonly=(<true|false>));
<参考条件列表>中的每一个条件由@RefCondition注解描述。
可选的,所述获取数据对象具体包括:
通过Open方法打开一个数据集,Open表达式为:Open(<对象路径>,<对象名称>,<分批获取时的一次获取最多数量,全部一次获取时设0>,<条件表达式>,<排序字段列表>);
getAll(),即一次性全部获取所有对象列表;
如果是分批获取,那么open方法中必须给出一批对象数量参数,next()是向后获取一批对象列表;previous()是向前获取一批对象列表;go(<页号>)表示获取数据集中任意一页对象列表;isEof()表示向后获取是否结束;isBof()表示向前获取是否结束;
单个对象的持久化步骤,具体包括:
1)addPersistent Object(<java对象>),即向数据库中添加单个对象实例;2)setPersistent Object(<java对象>),即修改单个对象实例;3)delPersistent Object(<java对象>),即删除单个对象实例。
可选的,所述批量对象持久化模块具体包括:
Batch PersistentObjects(<对象列表>)步骤,即批量向数据库中添加对象实例,内部采用批量SQL语句提交,提高持久化速度和效率;
batchSet PersistentObjects(<对象列表>)步骤,即批量修改对象实例列表;
batchDel PersistentObjects(<对象列表>)步骤,即批量删除对象实例列表;
delAll()步骤,即一次性删除数据集所有对象实例。
可选的,所述SQL语句执行模具体包括:执行SQL语句的方法分三个大类;
第一大类是execSql执行任意SQL语句,没有结果返回,根据不同的参数类型方法重载,格式如下:
execSql(<数据源名称>,<SQL语句>,<参数列表>);
第二大类是有返回数据集的execSqlQuery方法,根据不同参数和不同的返回结果方法重载,格式如下:
<结果集>execSqlQuery(<数据源名称>,<SQL语句>,<结果集处理类>);
第三大类返回单个基本对象值的sqlQueryFor<Int|Long|Double|Object|Map>方法,根据不同参数和不同的返回结果方法重载,格式如下:
sqlQueryFor<Int|Long|Double|Object|Map>(<数据源名称>,<SQL语句>,<参数列表>,<结果集处理类>)。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

Claims (8)

1.关系数据库统一数据存取中间件方法,其特征在于,包括:
步骤SS1:JavaBean对象通过统一数据存取中间件UnifyDataAccess提供的java注解,表达相关的元数据;
步骤SS2:数据对象获取步骤;
步骤SS3:批量对象持久化步骤;
步骤SS4:SQL语句执行步骤;
所述步骤SS1中的元数据具体包括:
对象级元数据@UnifyAccessDataset和属性元数据@Persistent、@Prompt、@Referrence、@RefCondition;
@UnifyAccessDataset注解:描述整个java对象和关系数据库数据集的关系,该注解表达数据源、对应的主数据库表、数据集SQL语句、SQL中是否有where条件以及对象描述;具体格式如下:
步骤SS11:@UnifyAccessDataset注解,用于执行:(datasource = (<数据源名称>),table = (<主表名>);basedsql = (<SQL语句>), haswhere=(<true|false>),description=(<描述>));
@Persistent注解:描述对象属性和关系数据库中数据属性的对应关系,包括:field字段名,默认数据库表中字段名和对象属性名是一致的,不一致时需要注解;fieldtype字段类型,默认数据库表中字段类型和对象属性类型是一致的,不一致时需要注解;primarykey说明该属性对应的数据库字段是否主键,是主键时需要注解;isjoined说明该属性对应的数据库字段是关联字段,是关联字段时需要注解;format当对象属性数据格式为日期格式时,通过该注解中间件会将数据库的数据按照要求的格式转换;具体格式如下:
@Persistent(field=(<数据库字段名>),fieldtype=(<数据库字段类型>),primarykey=(<true|false>),isjoined=(<true|false>),format=(<格式串>));
@Prompt注解,具体包括:表达数据对象在应用界面中的显示,包括:显示顺序sqn、显示文字fieldDesc、是否显示visible、显示宽度viewWidth;具体格式如下:
@Prompt(sqn=(<顺序号>),fieldDesc=(<提示>),visible=(<true|false>),viewWidth=(<显示宽度>));
@Referrence注解:当java对象是包括主明细对象的复杂对象时,主对象中的某个属性是明细对象的列表,通过该注解描述明细参考对象列表;包括:objectname描述参考对象名称及对象路径;refattribute参考属性名称;condlist参考条件列表;orderby参考对象实例列表排序要求;readonly是否只读,无需持久化处理;和@RefCondition注解配合,@RefCondition描述了单个参考条件;具体格式如下:
@Referrence(objectname=(<参考对象路径及对象名称>),refattribute=(<参考对象中的属性名称>),condlist=(<参考条件列表>),orderby=(<排序字段列表>),readonly=(<true|false>)) ;
<参考条件列表>中的每一个条件由@RefCondition注解描述。
2.根据权利要求1所述的关系数据库统一数据存取中间件方法,其特征在于,所述步骤SS2具体包括:
步骤SS21:通过Open方法打开一个数据集,Open表达式为:Open(<对象路径>,<对象名称>,<分批获取时的一次获取最多数量,全部一次获取时设0>,<条件表达式>,<排序字段列表>);
步骤SS22:getAll(),即一次性全部获取所有对象列表;
步骤SS23:如果是分批获取,那么open方法中必须给出一批对象数量参数,next()是向后获取一批对象列表;previous()是向前获取一批对象列表;go(<页号>)表示获取数据集中任意一页对象列表;isEof()表示向后获取是否结束;isBof()表示向前获取是否结束;
步骤SS24:单个对象的持久化步骤,具体包括:
1)addPersistent Object(<java对象>),即向数据库中添加单个对象实例;2)setPersistent Object(<java对象>),即修改单个对象实例;3)delPersistent Object(<java对象>),即删除单个对象实例。
3.根据权利要求1所述的关系数据库统一数据存取中间件方法,其特征在于,所述步骤SS3具体包括:
步骤SS31:batch PersistentObjects(<对象列表>)步骤,即批量向数据库中添加对象实例,内部采用批量SQL语句提交,提高持久化速度和效率;
步骤SS32:batchSet PersistentObjects(<对象列表>)步骤,即批量修改对象实例列表;
步骤SS33:batchDel PersistentObjects(<对象列表>)步骤,即批量删除对象实例列表;
步骤SS34:delAll()步骤,即一次性删除数据集所有对象实例。
4.根据权利要求1所述的关系数据库统一数据存取中间件方法,其特征在于,所述步骤SS4具体包括:执行SQL语句的方法分三个大类;
第一大类是execSql执行任意SQL语句,没有结果返回,根据不同的参数类型方法重载,格式如下:
execSql(<数据源名称>,<SQL语句>,<参数列表>);
第二大类是有返回数据集的execSqlQuery方法,根据不同参数和不同的返回结果方法重载,格式如下:
<结果集>execSqlQuery(<数据源名称>,<SQL语句>, <结果集处理类>);
第三大类返回单个基本对象值的sqlQueryFor<Int|Long|Double|Object|Map>方法,根据不同参数和不同的返回结果方法重载,格式如下:
sqlQueryFor<Int|Long|Double|Object|Map>(<数据源名称>, <SQL语句>, <参数列表>, <结果集处理类>)。
5.关系数据库统一数据存取中间件系统,其特征在于,包括:
元数据表达模块,用于执行:JavaBean对象通过统一数据存取中间件UnifyDataAccess提供的java注解,表达相关的元数据;
数据对象获取模块,用于执行:获取数据对象;
批量对象持久化模块,用于执行:向数据库中批量添加所述数据对象;
SQL语句执行模块,用于执行:执行SQL语句;
所述元数据表达模块具体包括:对象级元数据@UnifyAccessDataset和属性元数据@Persistent、@Prompt、@Referrence、@RefCondition;
所述@UnifyAccessDataset注解:描述整个java对象和关系数据库数据集的关系,该注解表达数据源、对应的主数据库表、数据集SQL语句、SQL中是否有where条件以及对象描述;具体格式如下:
@UnifyAccessDataset注解,用于执行:(datasource = (<数据源名称>), table = (<主表名>);basedsql = (<SQL语句>), haswhere=(<true|false>), description=(<描述>));
@Persistent注解:描述对象属性和关系数据库中数据属性的对应关系,包括:field字段名,默认数据库表中字段名和对象属性名是一致的,不一致时需要注解;fieldtype字段类型,默认数据库表中字段类型和对象属性类型是一致的,不一致时需要注解;primarykey说明该属性对应的数据库字段是否主键,是主键时需要注解;isjoined说明该属性对应的数据库字段是关联字段,是关联字段时需要注解;format当对象属性数据格式为日期格式时,通过该注解中间件会将数据库的数据按照要求的格式转换;具体格式如下:
@Persistent(field=(<数据库字段名>),fieldtype=(<数据库字段类型>),primarykey=(<true|false>),isjoined=(<true|false>),format=(<格式串>));
@Prompt注解,具体包括:表达数据对象在应用界面中的显示,包括:显示顺序sqn、显示文字fieldDesc、是否显示visible、显示宽度viewWidth;具体格式如下:
@Prompt(sqn=(<顺序号>),fieldDesc=(<提示>),visible=(<true|false>),viewWidth=(<显示宽度>));
@Referrence注解:当java对象是包括主明细对象的复杂对象时,主对象中的某个属性是明细对象的列表,通过该注解描述明细参考对象列表,包括:objectname描述参考对象名称及对象路径;refattribute参考属性名称;condlist参考条件列表;orderby参考对象实例列表排序要求;readonly是否只读,无需持久化处理;和@RefCondition注解配合,@RefCondition描述了单个参考条件;具体格式如下:
@Referrence(objectname=(<参考对象路径及对象名称>),refattribute=(<参考对象中的属性名称>),condlist=(<参考条件列表>),orderby=(<排序字段列表>),readonly=(<true|false>)) ;
<参考条件列表>中的每一个条件由@RefCondition注解描述。
6.根据权利要求5所述的关系数据库统一数据存取中间件系统,其特征在于,所述数据对象获取模块,具体包括:
通过Open方法打开一个数据集,Open表达式为:Open(<对象路径>,<对象名称>,<分批获取时的一次获取最多数量,全部一次获取时设0>,<条件表达式>,<排序字段列表>);
getAll(),即一次性全部获取所有对象列表;
如果是分批获取,那么open方法中必须给出一批对象数量参数,next()是向后获取一批对象列表;previous()是向前获取一批对象列表;go(<页号>)表示获取数据集中任意一页对象列表;isEof()表示向后获取是否结束;isBof()表示向前获取是否结束;
单个对象的持久化步骤,具体包括:
1)addPersistent Object(<java对象>),即向数据库中添加单个对象实例;2)setPersistent Object(<java对象>),即修改单个对象实例;3)delPersistent Object(<java对象>),即删除单个对象实例。
7.根据权利要求5所述的关系数据库统一数据存取中间件系统,其特征在于,所述批量对象持久化模块具体包括:
Batch PersistentObjects(<对象列表>)步骤,即批量向数据库中添加对象实例,内部采用批量SQL语句提交,提高持久化速度和效率;
batchSet PersistentObjects(<对象列表>)步骤,即批量修改对象实例列表;
batchDel PersistentObjects(<对象列表>)步骤,即批量删除对象实例列表;
delAll()步骤,即一次性删除数据集所有对象实例。
8.根据权利要求5所述的关系数据库统一数据存取中间件系统,其特征在于,所述SQL语句执行模具体包括:执行SQL语句的方法分三个大类;
第一大类是execSql执行任意SQL语句,没有结果返回,根据不同的参数类型方法重载,格式如下:
execSql(<数据源名称>,<SQL语句>,<参数列表>);
第二大类是有返回数据集的execSqlQuery方法,根据不同参数和不同的返回结果方法重载,格式如下:
<结果集>execSqlQuery(<数据源名称>,<SQL语句>, <结果集处理类>);
第三大类返回单个基本对象值的sqlQueryFor<Int|Long|Double|Object|Map>方法,根据不同参数和不同的返回结果方法重载,格式如下:
sqlQueryFor<Int|Long|Double|Object|Map>(<数据源名称>, <SQL语句>, <参数列表>, <结果集处理类>)。
CN202010907806.4A 2020-09-02 2020-09-02 关系数据库统一数据存取中间件方法及系统 Active CN112181996B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010907806.4A CN112181996B (zh) 2020-09-02 2020-09-02 关系数据库统一数据存取中间件方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010907806.4A CN112181996B (zh) 2020-09-02 2020-09-02 关系数据库统一数据存取中间件方法及系统

Publications (2)

Publication Number Publication Date
CN112181996A CN112181996A (zh) 2021-01-05
CN112181996B true CN112181996B (zh) 2022-09-16

Family

ID=73924078

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010907806.4A Active CN112181996B (zh) 2020-09-02 2020-09-02 关系数据库统一数据存取中间件方法及系统

Country Status (1)

Country Link
CN (1) CN112181996B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113839923B (zh) * 2021-08-28 2022-09-30 西安交通大学 一种面向多节点的高性能处理方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101339559A (zh) * 2008-07-18 2009-01-07 北京航空航天大学 一种数据持久化实现方法
US7702649B1 (en) * 2004-06-08 2010-04-20 Sap Ag Object-relational mapping system and method for generic relationships
CN101980213A (zh) * 2010-11-23 2011-02-23 中国科学院软件研究所 一种基于j2ee的数据持久化方法及系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7702649B1 (en) * 2004-06-08 2010-04-20 Sap Ag Object-relational mapping system and method for generic relationships
CN101339559A (zh) * 2008-07-18 2009-01-07 北京航空航天大学 一种数据持久化实现方法
CN101980213A (zh) * 2010-11-23 2011-02-23 中国科学院软件研究所 一种基于j2ee的数据持久化方法及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
面向数据库的持久化事务内存;Hillel Avni等;《计算机研究与发展》;20180115;全文 *

Also Published As

Publication number Publication date
CN112181996A (zh) 2021-01-05

Similar Documents

Publication Publication Date Title
US10831753B2 (en) Query plan generation and execution in a relational database management system with a temporal-relational database
US20220179876A1 (en) Metadata hub for metadata models of database objects
CN106202207B (zh) 一种基于HBase-ORM的索引及检索系统
US6374252B1 (en) Modeling of object-oriented database structures, translation to relational database structures, and dynamic searches thereon
EP1585036A2 (en) Management of parameterized database queries
US20150324191A1 (en) Universal and adaptive software development platform for data-driven applications
US10942926B2 (en) Identification, and query, of semantically-related database tables
US10437564B1 (en) Object mapping and conversion system
US20110252049A1 (en) Function execution using sql
US11341142B2 (en) Framework and metadata artefacts for updating data artefacts
US10509632B2 (en) Model augmentation in a model-driven application development environment
EP4155965A1 (en) System and method for facilitating metadata identification and import
CN115905212A (zh) 具有相关性标识符的集中式元数据储存库
CN112181996B (zh) 关系数据库统一数据存取中间件方法及系统
US20040254916A1 (en) Data query schema based on conceptual context
CN111797277A (zh) 映射对象系统与关系系统的方法、装置、计算机读存储介质及终端设备
WO2023086322A1 (en) Late materialization of queried data in database cache
Bychkov et al. Methods and tools for automation of development of information systems using specifications of database applications
CN113885970A (zh) 一种基于脚本生成报表数据的方法、系统及介质
JP2024504556A (ja) データ処理システムによって管理されるデータエンティティにアクセスするためのシステム及び方法
CN114238467A (zh) 一种结构化数据分析方法及系统
US11940951B2 (en) Identification and import of metadata for extensions to database artefacts
US20100332469A1 (en) Systems and methods for accessing data from a database
US20240134871A1 (en) System and method for reduced query language complexity
EP4170516A1 (en) Metadata elements with persistent identifiers

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant