CN112181996A - 关系数据库统一数据存取中间件方法及系统 - Google Patents
关系数据库统一数据存取中间件方法及系统 Download PDFInfo
- Publication number
- CN112181996A CN112181996A CN202010907806.4A CN202010907806A CN112181996A CN 112181996 A CN112181996 A CN 112181996A CN 202010907806 A CN202010907806 A CN 202010907806A CN 112181996 A CN112181996 A CN 112181996A
- Authority
- CN
- China
- Prior art keywords
- list
- database
- data
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
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)delPersistentObject(<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)delPersistentObject(<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 (10)
1.关系数据库统一数据存取中间件方法,其特征在于,包括:
步骤SS1:JavaBean对象通过统一数据存取中间件UnifyDataAccess提供的java注解,表达相关的元数据;
步骤SS2:数据对象获取步骤;
步骤SS3:批量对象持久化步骤;
步骤SS4:SQL语句执行步骤。
2.根据权利要求1所述的关系数据库统一数据存取中间件方法,其特征在于,所述步骤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注解描述。
3.根据权利要求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对象>),即删除单个对象实例。
4.根据权利要求1所述的关系数据库统一数据存取中间件方法,其特征在于,所述步骤SS3具体包括:
步骤SS31:batch PersistentObjects(<对象列表>)步骤,即批量向数据库中添加对象实例,内部采用批量SQL语句提交,提高持久化速度和效率;
步骤SS32:batchSet PersistentObjects(<对象列表>)步骤,即批量修改对象实例列表;
步骤SS33:batchDel PersistentObjects(<对象列表>)步骤,即批量删除对象实例列表;
步骤SS34:delAll()步骤,即一次性删除数据集所有对象实例。
5.根据权利要求1所述的关系数据库统一数据存取中间件方法,其特征在于,所述步骤SS4具体包括:执行SQL语句的方法分三个大类;
第一大类是execSql执行任意SQL语句,没有结果返回,根据不同的参数类型方法重载,格式如下:
execSql(<数据源名称>,<SQL语句>,<参数列表>);
第二大类是有返回数据集的execSqlQuery方法,根据不同参数和不同的返回结果方法重载,格式如下:
<结果集>execSqlQuery(<数据源名称>,<SQL语句>,<结果集处理类>);
第三大类返回单个基本对象值的sqlQueryFor<Int|Long|Double|Object|Map>方法,根据不同参数和不同的返回结果方法重载,格式如下:
sqlQueryFor<Int|Long|Double|Object|Map>(<数据源名称>,<SQL语句>,<参数列表>,<结果集处理类>)。
6.关系数据库统一数据存取中间件系统,其特征在于,包括:
元数据表达模块,用于执行:JavaBean对象通过统一数据存取中间件UnifyDataAccess提供的java注解,表达相关的元数据;
数据对象获取模块,用于执行:获取数据对象;
批量对象持久化模块,用于执行:向数据库中批量添加所述数据对象;
SQL语句执行模块,用于执行:执行SQL语句。
7.根据权利要求6所述的关系数据库统一数据存取中间件系统,其特征在于,所述元数据表达模块具体包括:对象级元数据@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注解描述。
8.根据权利要求6所述的关系数据库统一数据存取中间件系统,其特征在于,所述获取数据对象具体包括:
通过Open方法打开一个数据集,Open表达式为:Open(<对象路径>,<对象名称>,<分批获取时的一次获取最多数量,全部一次获取时设0>,<条件表达式>,<排序字段列表>);
getAll(),即一次性全部获取所有对象列表;
如果是分批获取,那么open方法中必须给出一批对象数量参数,next()是向后获取一批对象列表;previous()是向前获取一批对象列表;go(<页号>)表示获取数据集中任意一页对象列表;isEof()表示向后获取是否结束;isBof()表示向前获取是否结束;
单个对象的持久化步骤,具体包括:
1)addPersistent Object(<java对象>),即向数据库中添加单个对象实例;
2)setPersistent Object(<java对象>),即修改单个对象实例;3)delPersistentObject(<java对象>),即删除单个对象实例。
9.根据权利要求6所述的关系数据库统一数据存取中间件系统,其特征在于,所述批量对象持久化模块具体包括:
Batch PersistentObjects(<对象列表>)步骤,即批量向数据库中添加对象实例,内部采用批量SQL语句提交,提高持久化速度和效率;
batchSet PersistentObjects(<对象列表>)步骤,即批量修改对象实例列表;
batchDel PersistentObjects(<对象列表>)步骤,即批量删除对象实例列表;
delAll()步骤,即一次性删除数据集所有对象实例。
10.根据权利要求6所述的关系数据库统一数据存取中间件系统,其特征在于,所述SQL语句执行模具体包括:执行SQL语句的方法分三个大类;
第一大类是execSql执行任意SQL语句,没有结果返回,根据不同的参数类型方法重载,格式如下:
execSql(<数据源名称>,<SQL语句>,<参数列表>);
第二大类是有返回数据集的execSqlQuery方法,根据不同参数和不同的返回结果方法重载,格式如下:
<结果集>execSqlQuery(<数据源名称>,<SQL语句>,<结果集处理类>);
第三大类返回单个基本对象值的sqlQueryFor<Int|Long|Double|Object|Map>方法,根据不同参数和不同的返回结果方法重载,格式如下:
sqlQueryFor<Int|Long|Double|Object|Map>(<数据源名称>,<SQL语句>,<参数列表>,<结果集处理类>)。
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 true CN112181996A (zh) | 2021-01-05 |
CN112181996B 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) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113839923A (zh) * | 2021-08-28 | 2021-12-24 | 西安交通大学 | 一种面向多节点的高性能处理方法 |
Citations (3)
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的数据持久化方法及系统 |
-
2020
- 2020-09-02 CN CN202010907806.4A patent/CN112181996B/zh active Active
Patent Citations (3)
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)
Title |
---|
HILLEL AVNI等: "面向数据库的持久化事务内存", 《计算机研究与发展》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113839923A (zh) * | 2021-08-28 | 2021-12-24 | 西安交通大学 | 一种面向多节点的高性能处理方法 |
CN113839923B (zh) * | 2021-08-28 | 2022-09-30 | 西安交通大学 | 一种面向多节点的高性能处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112181996B (zh) | 2022-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10496644B2 (en) | Query plan generation and execution in a relational database management system with a temporal-relational database | |
US9038022B2 (en) | Universal and adaptive software development platform for data-driven applications | |
US6996558B2 (en) | Application portability and extensibility through database schema and query abstraction | |
US6374252B1 (en) | Modeling of object-oriented database structures, translation to relational database structures, and dynamic searches thereon | |
EP1585036A2 (en) | Management of parameterized database queries | |
US11341142B2 (en) | Framework and metadata artefacts for updating data artefacts | |
US20110252049A1 (en) | Function execution using sql | |
US20080263142A1 (en) | Meta Data Driven User Interface System and Method | |
US11561976B1 (en) | System and method for facilitating metadata identification and import | |
US20140122523A1 (en) | Point-in-time query system | |
US11934361B2 (en) | Automatic generation of a data model from a structured query language (SQL) statement | |
US10509632B2 (en) | Model augmentation in a model-driven application development environment | |
US20080263018A1 (en) | Method and System for Mapping Business Objects to Relational Database Tables | |
Vial | Lessons in persisting object data using object-relational mapping | |
CN111797277A (zh) | 映射对象系统与关系系统的方法、装置、计算机读存储介质及终端设备 | |
CN112181996B (zh) | 关系数据库统一数据存取中间件方法及系统 | |
US11940951B2 (en) | Identification and import of metadata for extensions to database artefacts | |
CN116955393A (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
CN114372108A (zh) | 一种关系数据库、非关系数据库无状态数据统一存取方法及系统 | |
JP2024504556A (ja) | データ処理システムによって管理されるデータエンティティにアクセスするためのシステム及び方法 | |
US20200320069A1 (en) | Hybrid compilation framework for arbitrary ad-hoc imperative functions in database queries | |
US9495413B2 (en) | Systems and methods for accessing data from a database | |
US20240134849A1 (en) | Virtual access to parameterized data objects | |
US12079179B2 (en) | Systems, methods, and media for accessing derivative properties from a post relational database utilizing a logical schema instruction that includes a base object identifier | |
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 |