CN100456237C - 数据库访问方法和装置 - Google Patents

数据库访问方法和装置 Download PDF

Info

Publication number
CN100456237C
CN100456237C CNB2007100031230A CN200710003123A CN100456237C CN 100456237 C CN100456237 C CN 100456237C CN B2007100031230 A CNB2007100031230 A CN B2007100031230A CN 200710003123 A CN200710003123 A CN 200710003123A CN 100456237 C CN100456237 C CN 100456237C
Authority
CN
China
Prior art keywords
database
dbapi
encapsulated layer
name
sql statement
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
Application number
CNB2007100031230A
Other languages
English (en)
Other versions
CN101004683A (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CNB2007100031230A priority Critical patent/CN100456237C/zh
Publication of CN101004683A publication Critical patent/CN101004683A/zh
Application granted granted Critical
Publication of CN100456237C publication Critical patent/CN100456237C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明实施例公开了一种数据库访问方法,数据库应用程序接口(DBAPI)封装层接收数据库操作信息;DBAPI封装层根据所述数据库操作信息生成结构化查询语言(SQL)并访问数据库。本发明实施例还同时公开了一种数据库访问装置,应用该方法和装置使得数据库访问变得简单而方便。

Description

数据库访问方法和装置
技术领域
本发明涉及数据库技术,特别涉及一种数据库访问方法和装置。
背景技术
当前,电信等领域在进行各自相关业务时,都会产生大量的数据需要处理,对于这种对数据处理性能要求很高,同时又有着大量现场定制开发任务的系统来说,使用一种方便且高效的数据库访问机制是十分必要的。目前业界已经有了很多关于封装数据库访问机制的解决方案,如企业级Java Beans(EJB)的容器管理持久化的O-R(对象-关系)映射机制、iBATIS结构化查询语言映射(iBATIS SQL Maps)机制以及休眠(hibernate)机制等。
但是,每种解决方案都有其局限性:
EJB的容器管理持久化的O-R映射机制不允许使用数据库特有的性质,从而在如前所述的性能要求比较高的场合无法达到要求。
iBATIS SQL Maps解决方案使用配置的SQL语言来实现O-R映射,同时支持一定程度上的动态查询条件能力,对于业务编写人员来说,面对的只是java对象;对于具体的数据操作,则要求开发人员编写具体的SQL语句,下面是iBATIS配置文件的例子:
<select id=“getUsers”parameterClass=“user”resultMap=“get-user-result”>
select id,name,sex from t_user
  <dynamic prepend=“WHERE”>
    <isNotEmpty prepend=“AND”property=“name”>
      (name like #name#)
    </isNotEmpty>
    <isNotEmpty prepend=“AND”property=“address”>
       (address like #address#)
     </isNotEmpty>
    </dynamic>
</select>
iBATIS SQL Maps只支持使用SQL配置来进行O-R映射,这样一来,对于很多简单的逻辑,会增加很多配置信息,造成工作量的增加;同时,该方案所使用的SQL配置格式对于动态SQL的支持能力比较弱,对复杂动态条件的支持能力有限。
Hibernate的解决方案倾向于使用全配置的方式进行O-R映射,由可扩展标识语言(XML)文件配置整个关系模型,并由hibernate自动生成访问数据库的SQL语句;而且,hibernate中增加了hibernate查询语言(HQL),可以通过配置HQL来处理比较复杂的查询。这种方式的自动化程度比较高,但是因为要自动产生SQL语句,hibernate的配置倾向于复杂化,也就是说需要做很多复杂的配置才可以完成预定的功能,尤其是当要处理业务统计以及多表关联查询等业务时,配置很多,限制也很多;而且,对于大型系统,SQL的性能是非常关键的,目前自动产生的SQL语句还很难智能到可以实现很好优化的程度,所以还需要人为干预最终的SQL语句;还有,HQL的限制比较多,学习HQL也不比SQL简单,因此相应的造成使用HQL还没有直接使用SQL有效。
当前,类似电信业务运营支撑系统(BOSS)等领域的开发,不仅需要操作大量的数据,而且现场需求多变,需要反复的现场定制开发,而这一过程往往需要上百人历时数月才可以完成,如此长时间高强度的现场定制开发工作,不仅需要耗费一家公司大量的资源,而且也难以保证工作质量和项目进度。而现有的数据库访问机制除了具备上述种种缺陷之外,还因为它们都是为了满足通用性的目的而开发的,所以若想在其上组建一个业务开发平台会非常困难。因此,从技术层面上寻找一种访问数据库的方法,使得该方法既支持现场定制开发,又支持简单方便地使用数据库的各种专有特性实现特定目的是很有必要的。
发明内容
有鉴于此,本发明实施例的主要目的在于提供一种数据库访问方法,以提供一种简单方便的数据库访问机制。
本发明实施例的另一个目的在于提供一种数据库访问装置,以提供一种简单方便的数据库访问装置。
为达到上述目的,本发明实施例的技术方案是这样实现的:
一种数据库访问方法,该方法包括以下步骤:
数据库应用程序接口DBAPI封装层接收数据库操作信息;所述数据库操作信息包括功能名、值对象和环境变量;所述DBAPI封装层中预先存储有业务配置以及数据源配置信息;
DBAPI封装层根据所述数据库操作信息生成结构化查询语言SQL语句并访问数据库,包括:
根据功能名查找到对应的业务配置,生成动态SQL语句,并根据环境变量查找数据源配置获取数据源数据库信息;
利用所述值对象对所述动态SQL语句进行解析,并通过解析后的SQL访问所述数据源数据库。
一种数据库访问装置,该装置包括界面层模块、DBAPI封装层模块以及数据库存储模块;
所述界面层模块,用于向DBAPI封装层模块发送数据库操作信息,并接收DBAPI封装层模块返回的数据库操作结果;
所述DBAPI封装层模块,用于接收来自界面层模块的数据库操作信息,根据所述数据库操作信息生成SQL语句,并通过所述SQL语句访问数据库存储模块;
所述数据库存储模块,用于接收来自DBAPI封装层模块的SQL语句,根据所述SQL语句执行数据库操作,并向DBAPI封装层模块返回数据库操作结果;
其中,所述界面层模块进一步包括接口层模块以及业务层模块;
所述接口层模块,用于向DBAPI封装层模块传送环境变量;
所述业务层模块,用于向DBAPI封装层模块发送功能名、值对象、数据库表名以及查询对象,并接收DBAPI封装层模块输出的数据库操作结果;
所述DBAPI封装层模块中预先存储有业务配置、数据源配置以及命名约束信息;所述DBAPI封装层模块进一步用于,根据功能名查找对应的业务配置,生成动态SQL语句,并利用所述值对象对所述动态SQL语句进行解析;或者,从接收到的值对象和/或查询对象中获取属性名,根据命名约束中预先规定的属性名和字段名转换规则,将所述属性名转换成相应的字段名,并进一步生成对应的SQL语句。
可见,采用了本发明实施例的技术方案,DBAPI封装层接收数据库操作信息,根据接收的数据库操作信息自动生成相应的SQL语句访问数据库,并输出返回的数据库操作结果,这样,对于数据库访问操作来说均成了简单的函数调用,使得数据库访问变得简单而方便,提高了数据库访问效率。
附图说明
图1为本发明数据库访问方法较佳实施例流程图;
图2为本发明数据库访问装置较佳实施例结构示意图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明作进一步地详细说明。
为了更清楚的说明本发明实施例的技术方案,首先介绍两个概念:
简单对象:又可称为基本对象或基本类型,表现为字符串、整数、浮点小数、定点小数或日期等。
值对象:对象的一种,特指其重要属性是由简单对象组合而成,且其含义重点在数据上的对象。
本较佳实施方式的基本思想为:对于数据库访问操作,可理解为一个单一的函数调用,调用的参数为一个值对象,返回值是一个普通对象。根据操作方式的不同,返回的对象有三种不同的类型:代表操作是否成功的状态变量、代表返回结果集的值对象数组以及代表多返回值的由简单对象和值对象容器组成的对象。其中,每次的数据库操作对应且只对应一次函数调用,整个调用过程对业务层透明,但可以通过配置项来影响和定制和数据库交互的中间部分,并且在没有配置项的情况下,支持自动根据命名约束来和数据库进行交互。本发明实施例方案是在Java平台下实现。
依据上述基本思想,图1为本发明数据库访问方法较佳实施例流程图,如图1所示,包括以下步骤:
步骤101:数据库应用接口程序(DBAPI)封装层接收数据库操作信息。
数据库操作信息包括功能名、值对象和环境变量等信息。其中,功能名用于标识业务配置ID;值对象用于标识相应的数据库操作信息;环境变量主要保存当前登陆用户信息、当前访问者的IP地址信息以及和日志、安全审计等相关的一些信息。
环境变量在系统的边界切面设置,对于servlet,该位置一般在全局过滤器处或者行为(action)的公共基类里面,由公共框架层统一写入;对于EJB或者其它组建,如传统信息控制系统(cics)中间件,该值由系统架构通过接口层传入,当SQL语句中需要这些信息的时候,可以随时获取。环境变量本质上是由一组线程本地变量构成,线程本地变量在标准数据库中已经实现,实现机制和线程对象构成规则映射,可以伴随线程对象的消亡而消亡。由于对于一个调用链来说,如果不跨越各种边界,一般都是在一个线程内进行的,所以应用程序和公共框架层可以在任何位置获取这些值。
步骤102:DBAPI封装层根据数据库操作信息生成SQL语句并访问数据库。
DBAPI封装层中预先存储有业务配置、数据源配置以及命名约束信息。DBAPI封装层根据接收到的功能名和值对象查找到对应的业务配置,通过环境变量查找数据源配置获取数据源信息,并生成SQL语句,将生成的SQL语句进行解析,通过解析后的SQL语句访问数据源数据库。
上述较佳实施方式支持自动生成SQL语句以及动态SQL语句的方式。其中,动态SQL语句的生成方式为直接在SQL语句中使用动态SQL标识,从而做到不仅查询条件可以根据具体情况动态产生,而且整个SQL语句的各部分也可以根据具体情况动态产生,增加了动态SQL的适用范围,并简化了配置信息。动态SQL的语法定义方式如下所示:
动态SQL:=<预处理条件>【若干个动态SQL或者若干个简单SQL】;
简单SQL:=使用了属性名绑定标识的普通SQL语句。
上述简单SQL的定义方式为普通SQL语句加上按属性名绑定的标识,和iBATIS SQL Maps方案中的定义方式类似,所不同的是本发明实施例支持直接使用环境变量而且属性名绑定标识具备运算逻辑能力;另外在实现细节上,本发明实施例采用的是用变量名前加“:”的方式来表示属性名,而不是iBATISSQL Maps方案中的“#”;上述运算逻辑是为了弥补对象模型和数据库模型的差异,使得业务层不至于因为要访问数据库而进行专门的处理,强化数据库操作的透明性。
下面举例说明动态SQL语句的语法定义方式:
首先介绍简单SQL语句格式:
Select*from cust where custtype=:custtype and managerid=:RunContext.userId
这里使用变量名前加“:”代表需要绑定的属性名称,主要是为了符合数据库中SQL语句的习惯;RunContext是环境变量标识,RunContext.userId代表当前登录用户;custtype是传入的值对象的属性名。其中,环境变量可以由业务框架层在具体使用时重新定义。
包括运算逻辑的简单SQL语句格式:
Select*from cust where managerid in(:managerids[split with,])and custidlike:cust[+]%
其中,managerids和cust都是值对象的属性值,managerids是客户经理列表,用“,”分割不同客户经理的id;cust是custid的前若干个字符,该语句将被解析成下面的SQL执行:
Select*from vip where region=?And managerid in(?,?,......?)and custid like?In条件里“?”的数目根据managerids被分拆的结果而定。
未包含嵌套逻辑的动态SQL语句格式:
Select*from task_his
$[:datatype equals BeginDate]{and begindate>:databegin and enddate<:dateend}
$[:datatype equals CreatDate]{and creatdate>:databegin and creatdate<:dateend}
$[:datatype equals Endate]{and enddate>:databegin and enddate<:dateend}
$:taskname{and taskname like:taskname[+]%}
$:tasktype{and tasktype=:tasktype}
$:objtypeid{and objtypeid=:objtypeid}
其中由“$”前导的部分属于预处理条件,$[:datatype equals BeginDate]代表的意思是属性datatype的值是BeginDate;$:taskname是$[:taskname is not null]的简写形式,因为大多数动态条件都是采用这种格式,所以在此使用简写。
包含嵌套逻辑的动态SQL语句格式:
$[:costtype equals planactioncost]
{
对应的动态SQL语句
}
$[:costtype equals taskactioncost]
{
对应的动态SQL语句
}
$[:costtype equals workactioncost]
{
对应的动态SQL语句
}
另外,本发明实施例对于存储过程也提供了一致的访问方式,以支持对数据库的透明访问,下面是存储过程访问配置的例子:
P_QUERY_CUST(:servNumberVARCHAR2,:RunContext.userId VARCHAR2,:sendStateVARCHAR2,:remindsubject VARCHAR2,:region NUMBER,10 NUMBER,:countNumber OUTNUMBER,:r_Cursor OUT Cursor)
由于上述动态SQL语句的语法定义比较简单,因此解析起来相对比较容易,甚至不需要做严格的语法分析,只需要简单的做一遍扫描,寻找对应的前导字符和属性名标识符并做相应的处理即可,因此解析性能比较好。就目前实际实现的效果来看,对于典型的动态SQL语句,本发明实施例解析速度比使用String的charAt函数遍历该动态SQL字符串的速度快50%左右。
除了上述根据功能名和值对象查找业务配置,并相应生成SQL语句的方式之外,对于一些比较常见且业务逻辑也比较简单的单表操作,本发明实施例技术方案支持不添加任何的配置而直接使用值对象和/或查询对象,通过使用命名约束的方式进行针对数据库的增加、修改、查询以及删除操作,从而减少配置,提高开发效率。
本发明实施例采用命名约束方式,预先规定属性名和字段名的转换规则,该转换规则由对象实现,可通过编写业务代码重新定义该对象并通过类似控制反转(Ioc)的方式使用配置来重新定义该转换规则;对于针对数据库的增加、修改、查询以及删除等操作,按照该转换规则生成对应的insert、update、query以及delete SQL语句,具体转换方式为:
如果要在数据库中增加记录,即新建记录,则以数据库表名和值对象作为参数,数据库表名用于标识新建记录的数据库表位置,O-R映射层根据值对象获取值对象中的所有属性列表,并根据属性名和字段名转换规则生成相应的字段名,进而生成对应的insert语句。删除和查询操作以数据库表名和查询对象作为参数,值对象也可以被用作查询对象,或者转换成查询对象,这种情况下查询的结果以值对象中的对应各列为查询条件所做的查询记录集;查询对象严格来说也是值对象,是在值对象基础上增加一些查询所特有的关联关系,目的是为了在相对比较复杂但又不希望使用配置的情况下使用,O-R映射层根据查询对象或值对象获取要删除或查询的属性名,并根据属性名和字段名转换规则生成相应的字段名,进而生成对应的delete或query语句。修改操作以数据库表名、查询对象和值对象作为参数,其中,查询对象定义要修改的集合(通常是一条记录),值对象定义修改的结果,O-R映射层根据查询对象和值对象获取要修改以及修改结果的属性名,并根据属性名和字段名转换规则生成相应的字段名,进而生成对应的update语句。
步骤103:数据库根据SQL语句执行数据库操作,并向DBAPI封装层返回数据库操作结果。
本步骤中,数据库如何接收DBAPI封装层的SQL操作命令,如何进行相应的操作处理并如何返回操作结果均为现有技术,此处不作介绍。
步骤104:DBAPI封装层接收并输出数据库操作结果。
DBAPI封装层接收数据库返回的结果集/调用结果,并进行O-R映射,将结果集/调用结果映射为普通对象后输出给业务层。根据操作方式的不同,所述普通对象可以有三种不同的类型:代表操作是否成功的状态变量、代表返回结果集的值对象数组以及代表多返回值的由简单对象和值对象容器组成的对象。
当前,各企业在使用各数据库访问机制访问数据库过程中,为了自身数据的安全和各种政策的要求,都会对数据库的访问操作做详细的记录。过去的系统中都是由业务层记录这些日志,但是,在一个上百人的开发团队中,要一个一个的记录这些信息需要业务层做大量的工作,而且既费时又容易遗漏。在本发明实施例的技术方案中,业务层并不能直接的操作数据库对象,但是DBAPI封装层了解所有的数据库操作,比如,要执行的SQL语句和各个绑定变量的值等,而且,DBAPI封装层可以从环境变量中获取当前操作用户的所有记录信息以及程序执行路径等信息,因此DBAPI封装层可以根据上述信息很方便的记录下每个操作用户在任何时间对数据库的任何操作,甚至可以对不同的操作用户和不同的表设置访问权限。
同样,对于数据级权限,由于可以在SQL配置语句中直接获取当前操作用户的属性,所以要实现各种权限控制非常简单,业务层无需做额外的处理,只需在配置的SQL语句中直接使用即可。
图2为基于上述数据库访问方法的装置结构示意图,如图2所示,该装置包括界面层模块201、DBAPI封装层模块202以及数据库存储模块203;
界面层模块201,用于向DBAPI封装层模块202发送数据库操作信息,并接收DBAPI封装层模块202返回的数据库操作结果;
DBAPI封装层模块202,用于接收来自界面层模块201的数据库操作信息,根据所述数据库操作信息生成SQL语句,并通过所述SQL语句访问数据库存储模块203;
数据库存储模块203,用于接收来自DBAPI封装层模块202的SQL语句,根据SQL语句执行数据库操作,并向DBAPI封装层模块202返回数据库操作结果。
其中,界面层模块201进一步包括接口层模块2011以及业务层模块2012;接口层模块2011,用于向DBAPI封装层模块202传送环境变量;业务层模块2012,用于向DBAPI封装层模块202发送功能名、值对象、数据库表名以及查询对象,并接收DBAPI封装层模块202输出的数据库访问结果信息。
DBAPI封装层模块202中预先存储有业务配置、数据源配置以及命名约束信息。当要执行的数据库操作比较复杂时,DBAPI封装层模块202根据功能名和值对象查找对应的业务配置,并生成动态SQL语句;对于比较简单的业务,如数据库访问中比较常见的单表操作,DBAPI封装层模块202可以不使用业务配置,而直接根据命名约束中预先规定的属性名和字段名转换规则,从接收到的值对象和/或查询对象中获取属性,将所述属性转换成相应的字段名,并进一步生成对应的SQL语句。
DBAPI封装层模块202对生成的SQL语句进行解析,然后通过解析后的SQL访问数据库存储模块203,数据库本身如何执行相应的操作为现有技术,此处不作介绍;数据库完成操作后,通过数据库存储模块203返回结果信息,如结果集或调用结果;DBAPI封装层模块202进一步通过O-R映射将所述数据库操作结果映射为普通对象发送给业务层模块2012。此外,DBAPI封装层模块202还可以用于记录数据库访问日志和操作日志以及用于数据级权限控制。
由上可见,本发明实施例的技术方案兼顾了关系模型和对象模型的差异,并对界面层提供了一致的接口,实现了界面层的可配置化和开发的简易化。对于业务层来说,所有的数据库调用都可以简单的理解为API调用,无需考虑数据库的连接等问题,同时需要的配置也大为减少,极大的简化了业务代码编写工作和开发工作。对于DBAPI封装层来说,简单的业务可以根据命名规则自动进行,复杂的业务可以通过动态SQL语句来实现,既允许使用数据库的所有特性,又具备较大的灵活性,同时还可以屏蔽SQL语句或者SQL语句序列和存储过程的差异,在实际应用中,这就意味着既可以保留大量数据库开发人员的积累,又可以实现更高的性能要求,同时也能更好的支持开发工作后期的性能调优。
相比于类似hibernate的方案,本发明实施例允许开发人员完全地控制对数据库访问的SQL语句,同时又不会因为控制SQL语句而增加新的代码,发挥了数据库能够很好的处理数据逻辑的能力,又避免了数据库的缺点。相比于iBATIS SQL Maps,本发明实施例提供了更好的配置灵活性和简单性,并且因为环境变量等可以直接和上层的公共逻辑交互而提供了更为强大的业务支撑能力。此外,本发明实施例实现了很强的可定制能力,由于各个部分之间耦合比较松散,且存在一致的模型进行交互,所以任何一个层面发生变更的时候,对其它层面的影响都比较小,其它层面即使变动,也只需作较小的变更即可。
从实际应用效果来看,应用本发明实施例技术方案,结合华为公司开发的另外一套页面框架体系基本可以实现针对大部分商业逻辑的快速开发和全配置性,即使不使用全配置开发,定制人员也可以在几个小时之内就完成对一个功能的开发和测试工作,大大提高了现场定制开发工作的效率。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (13)

1、一种数据库访问方法,其特征在于,该方法包括以下步骤:
数据库应用程序接口DBAPI封装层接收数据库操作信息;所述数据库操作信息包括功能名、值对象和环境变量;所述DBAPI封装层中预先存储有业务配置以及数据源配置信息;
DBAPI封装层根据所述数据库操作信息生成结构化查询语言SQL语句并访问数据库,包括:
根据功能名查找到对应的业务配置,生成动态SQL语句,并根据环境变量查找数据源配置获取数据源数据库信息;
利用所述值对象对所述动态SQL语句进行解析,并通过解析后的SQL访问所述数据源数据库。
2、根据权利要求1所述的数据库访问方法,其特征在于,该方法进一步包括:根据所述SQL语句执行数据库操作,并向DBAPI封装层返回数据库操作结果;所述DBAPI封装层接收并输出所述数据库操作结果。
3、根据权利要求1所述的数据库访问方法,其特征在于,所述动态SQL语句的生成方式为:在SQL语句中使用动态SQL标识;语法格式为:预处理条件加上至少一个简单SQL语句和/或动态SQL语句。
4、根据权利要求3所述的数据库访问方法,其特征在于,所述简单SQL语句格式为:普通SQL语句加上按属性名绑定的标识。
5、根据权利要求3或4所述的数据库访问方法,其特征在于,所述简单SQL语句支持直接使用环境变量且所述属性名绑定标识具备运算逻辑。
6、根据权利要求1所述的数据库访问方法,其特征在于,
所述数据库操作信息进一步包括数据库表名和/或查询对象;所述DBAPI封装层中预先存储有命名约束信息;
所述DBAPI封装层根据所述数据库操作信息生成SQL语句并访问数据库的方法为:
所述DBAPI封装层从接收到的值对象和/或查询对象中获取属性名,并采用命名约束方式,根据预先规定的属性名和字段名转换规则,将所述属性名转换成相应的字段名,并进一步生成对应的SQL语句;
所述DBAPI封装层根据数据库表名获取要操作的数据库表信息;
所述DBAPI封装层对生成的SQL语句进行解析,并通过解析后的SQL访问对应的数据库表。
7、根据权利要求2所述的数据库访问方法,其特征在于,所述DBAPI封装层接收并输出数据库操作结果的方式为:
所述DBAPI封装层接收数据库所返回的结果集或调用结果,并通过对象-关系映射将所述结果集或调用结果映射为普通对象。
8、根据权利要求7所述的数据库访问方法,其特征在于,根据操作方式的不同,所述映射成的普通对象包括至少三种不同的类型,分别为代表操作是否成功的状态变量、代表返回结果元组的值对象数组或代表多返回值的由简单对象和值对象容器组成的对象。
9、根据权利要求1所述的数据库访问方法,其特征在于,该方法进一步包括:所述DBAPI封装层记录数据库访问日志和操作日志并实现数据级权限控制。
10、根据权利要求9所述的数据库访问方法,其特征在于,所述DBAPI封装层记录数据库访问日志和操作日志的方法为:所述DBAPI封装层在生成SQL语句并访问数据库的过程中自动记录数据库操作信息,并根据环境变量记录访问数据库的用户信息。
11、一种数据库访问装置,其特征在于,该装置包括界面层模块、DBAPI封装层模块以及数据库存储模块;
所述界面层模块,用于向DBAPI封装层模块发送数据库操作信息,并接收DBAPI封装层模块返回的数据库操作结果;
所述DBAPI封装层模块,用于接收来自界面层模块的数据库操作信息,根据所述数据库操作信息生成SQL语句,并通过所述SQL语句访问所述数据库存储模块;
所述数据库存储模块,用于接收来自DBAPI封装层模块的SQL语句,根据所述SQL语句执行数据库操作,并向DBAPI封装层模块返回数据库操作结果;
其中,所述界面层模块进一步包括接口层模块以及业务层模块;
所述接口层模块,用于向DBAPI封装层模块传送环境变量;
所述业务层模块,用于向DBAPI封装层模块发送功能名、值对象、数据库表名以及查询对象,并接收DBAPI封装层模块输出的数据库操作结果;
所述DBAPI封装层模块中预先存储有业务配置、数据源配置以及命名约束信息;所述DBAPI封装层模块进一步用于,根据功能名查找对应的业务配置,生成动态SQL语句,并利用所述值对象对所述动态SQL语句进行解析;或者,从接收到的值对象和/或查询对象中获取属性名,根据命名约束中预先规定的属性名和字段名转换规则,将所述属性名转换成相应的字段名,并进一步生成对应的SQL语句。
12、根据权利要求11所述的数据库访问装置,其特征在于,所述DBAPI封装层模块进一步用于,通过对象-关系映射将所述数据库操作结果映射为普通对象。
13、根据权利要求11所述的数据库访问装置,其特征在于,所述DBAPI封装层进一步用于,记录数据库访问日志和操作日志以及实现数据级权限控制。
CNB2007100031230A 2007-01-31 2007-01-31 数据库访问方法和装置 Expired - Fee Related CN100456237C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2007100031230A CN100456237C (zh) 2007-01-31 2007-01-31 数据库访问方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2007100031230A CN100456237C (zh) 2007-01-31 2007-01-31 数据库访问方法和装置

Publications (2)

Publication Number Publication Date
CN101004683A CN101004683A (zh) 2007-07-25
CN100456237C true CN100456237C (zh) 2009-01-28

Family

ID=38703856

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2007100031230A Expired - Fee Related CN100456237C (zh) 2007-01-31 2007-01-31 数据库访问方法和装置

Country Status (1)

Country Link
CN (1) CN100456237C (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106354605A (zh) * 2016-09-05 2017-01-25 上海爱数信息技术股份有限公司 一种数据库的访问方法、系统及具有该系统的服务器

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101141663B (zh) * 2007-10-11 2010-06-09 中兴通讯股份有限公司 一种用于提高智能网访问数据库效率的方法及系统
US7970790B2 (en) * 2008-05-13 2011-06-28 Microsoft Corporation Cell-based security representation for data access
CN102193922B (zh) * 2010-03-04 2013-07-24 杭州华三通信技术有限公司 一种对数据库进行访问的方法和装置
CN102073742B (zh) * 2011-01-31 2012-11-14 清华大学 一种海量对象的存储系统及其运行方法
CN102682038A (zh) * 2011-03-18 2012-09-19 阿里巴巴集团控股有限公司 一种数据库变更方法以及装置
CN102831123B (zh) * 2011-06-16 2015-04-08 航天信息股份有限公司 一种用于查询数据的权限控制方法和系统
CN102346774B (zh) * 2011-09-26 2013-09-18 深圳市信游天下网络科技有限公司 一种数据库操作方法
CN103514185B (zh) * 2012-06-20 2017-09-29 北京四维图新科技股份有限公司 导航地图多个更新区域的数据库文件访问管理方法及装置
EP2866108A4 (en) * 2012-06-22 2015-11-04 Omron Tateisi Electronics Co CONTROL DEVICE
CN102890712A (zh) * 2012-09-07 2013-01-23 佳都新太科技股份有限公司 一种基于多级协议栈结构的数据库查询接口的数据协议转换的方法
CN102999610A (zh) * 2012-11-22 2013-03-27 用友软件股份有限公司 数据访问系统和数据访问方法
CN103020301B (zh) * 2012-12-31 2015-08-19 中国科学院自动化研究所 一种多维度数据查询和存储方法及系统
CN103116622B (zh) * 2013-01-30 2016-03-09 深圳联友科技有限公司 一种用于Ibatis方案的序列值生成方法及装置
CN103294966B (zh) * 2013-03-12 2016-02-24 中国工商银行股份有限公司 一种数据库的安全访问控制方法以及系统
CN103235835B (zh) * 2013-05-22 2017-03-29 曙光信息产业(北京)有限公司 用于数据库集群的查询实现方法和装置
CN104239508B (zh) * 2014-09-12 2017-05-10 中国工商银行股份有限公司 数据查询方法和装置
CN104536963B (zh) * 2014-11-13 2019-01-25 中国建设银行股份有限公司 一种存储过程的调度方法和系统
CN105786932B (zh) * 2014-12-26 2020-03-27 北大医疗信息技术有限公司 医疗系统中临床业务的查询方法及查询装置
CN105468717B (zh) * 2015-11-20 2020-11-10 北京百度网讯科技有限公司 数据库操作方法和装置
US10621152B2 (en) * 2015-12-02 2020-04-14 Speedment, Inc. Methods and systems for mapping object oriented/functional languages to database languages
CN105550261A (zh) * 2015-12-09 2016-05-04 国云科技股份有限公司 一种基于ibatis的快速检索方法
CN106020847A (zh) * 2016-06-06 2016-10-12 北京京东尚科信息技术有限公司 一种持久层开发框架配置sql的方法和装置
CN107665216B (zh) * 2016-07-29 2021-04-27 银联数据服务有限公司 一种数据库访问方法及中间件
CN107944288B (zh) * 2016-10-12 2022-09-06 北京京东尚科信息技术有限公司 一种数据访问控制方法和装置
CN108984567B (zh) * 2017-06-02 2021-04-09 华为技术有限公司 一种业务数据管理系统及方法
CN107247811B (zh) * 2017-07-21 2020-03-13 中国联合网络通信集团有限公司 基于Oracle数据库的SQL语句性能优化方法及装置
CN109542925A (zh) * 2018-10-26 2019-03-29 广州朗尊软件科技有限公司 数据库访问系统、方法、设备及多用户商城系统
CN111506303A (zh) * 2019-01-30 2020-08-07 北大方正信息产业集团有限公司 数据交互方法和装置
CN109885780A (zh) * 2019-02-14 2019-06-14 珠海天燕科技有限公司 数据处理方法及装置
CN110597783B (zh) * 2019-08-14 2024-01-05 北京爱车无限网络科技有限公司 数据库管理方法、装置、设备及存储介质
CN114153864A (zh) * 2020-09-07 2022-03-08 华为云计算技术有限公司 一种生成api的方法及装置
CN112860725A (zh) * 2021-02-02 2021-05-28 浙江大华技术股份有限公司 Sql自动生成方法和装置、存储介质及电子设备
CN116955366B (zh) * 2023-09-21 2023-12-22 宝略科技(浙江)有限公司 一种数据导入处理方法、系统、装置及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020112038A1 (en) * 2000-09-15 2002-08-15 Rainer Hessmer Method and system for remote configuration of process data access servers
CN1881208A (zh) * 2005-06-14 2006-12-20 联想(北京)有限公司 动态结构化查询语言语句的构造方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020112038A1 (en) * 2000-09-15 2002-08-15 Rainer Hessmer Method and system for remote configuration of process data access servers
CN1881208A (zh) * 2005-06-14 2006-12-20 联想(北京)有限公司 动态结构化查询语言语句的构造方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
基于J2EE的电力营销管理信息系统. 祝卫华,姚春宇,李磊.信息工程大学学报,第5卷第3期. 2004
基于J2EE的电力营销管理信息系统. 祝卫华,姚春宇,李磊.信息工程大学学报,第5卷第3期. 2004 *
资源管理系统轻量级DAO模式的设计与实现. 徐勇,张中兆,吴斌.吉林大学学报(信息科学版),第22卷第5期. 2004
资源管理系统轻量级DAO模式的设计与实现. 徐勇,张中兆,吴斌.吉林大学学报(信息科学版),第22卷第5期. 2004 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106354605A (zh) * 2016-09-05 2017-01-25 上海爱数信息技术股份有限公司 一种数据库的访问方法、系统及具有该系统的服务器
CN106354605B (zh) * 2016-09-05 2019-06-21 上海爱数信息技术股份有限公司 一种数据库的访问方法、系统及具有该系统的服务器

Also Published As

Publication number Publication date
CN101004683A (zh) 2007-07-25

Similar Documents

Publication Publication Date Title
CN100456237C (zh) 数据库访问方法和装置
US9146955B2 (en) In-memory, columnar database multidimensional analytical view integration
US10515094B2 (en) System and method for analyzing and reporting extensible data from multiple sources in multiple formats
US7599948B2 (en) Object relational mapping layer
US7546226B1 (en) Architecture for automating analytical view of business applications
US8352478B2 (en) Master data framework
US8234308B2 (en) Deliver application services through business object views
US6954748B2 (en) Remote data access and integration of distributed data sources through data schema and query abstraction
US9229971B2 (en) Matching data based on numeric difference
US20070073663A1 (en) System and method for providing full-text searching of managed content
US20040181440A1 (en) Automatic generation of a dimensional model for business analytics from an object model for online transaction processing
KR20060045622A (ko) 컴퓨터화된 재무 시스템의 추출, 변환 및 로딩 설계자 모듈
JP2007531157A (ja) 基幹業務アプリケーション統合のためのアダプタフレームワーク
US20070112834A1 (en) Database consolidation tool
US20040181502A1 (en) Generation of business intelligence entities from a dimensional model
US20070073674A1 (en) System and method for providing federated events for content management systems
US10614062B2 (en) Data model extension generation
US7099727B2 (en) Knowledge repository system for computing devices
US9594805B2 (en) System and method for aggregating and integrating structured content
US20060224556A1 (en) SQL interface for services
Farooq The data warehouse virtualization framework for operational business intelligence
CN114661270A (zh) 一种基于前后端分离的低代码设计系统及开发方法
CA2498541A1 (en) System and method for presentation of wireless application data using repetitive ui layouts
US8910183B2 (en) Access to context information in a heterogeneous application environment
US8832180B2 (en) Function module dispatcher

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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090128

Termination date: 20160131

EXPY Termination of patent right or utility model