CN109542409A - 一种基于面向对象设计思想的存储方法及装置 - Google Patents

一种基于面向对象设计思想的存储方法及装置 Download PDF

Info

Publication number
CN109542409A
CN109542409A CN201811437136.3A CN201811437136A CN109542409A CN 109542409 A CN109542409 A CN 109542409A CN 201811437136 A CN201811437136 A CN 201811437136A CN 109542409 A CN109542409 A CN 109542409A
Authority
CN
China
Prior art keywords
projection
data model
relationship
oriented
data
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
Application number
CN201811437136.3A
Other languages
English (en)
Other versions
CN109542409B (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.)
China National Offshore Oil Corp CNOOC
Original Assignee
China National Offshore Oil Corp CNOOC
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 China National Offshore Oil Corp CNOOC filed Critical China National Offshore Oil Corp CNOOC
Priority to CN201811437136.3A priority Critical patent/CN109542409B/zh
Publication of CN109542409A publication Critical patent/CN109542409A/zh
Application granted granted Critical
Publication of CN109542409B publication Critical patent/CN109542409B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • G06F8/24Object-oriented

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种基于面向对象设计思想的存储方法、装置、设备及存储介质。该方法包括:在处于软件设计阶段时,通过逻辑模型向数据模型的投影技术自动建立数据模型;在处于软件编码阶段时,通过驱动引擎自动实现将对象实例存储到所述数据模型,通过本发明的技术方案,能够实现面向对象设计与面向对象编码的完整统一,减少设计与编码工作量,提高开发效率,减少沟通成本。

Description

一种基于面向对象设计思想的存储方法及装置
技术领域
本发明实施例涉及计算机技术,尤其涉及一种基于面向对象设计思想的存储方法、装置、设备及存储介质。
背景技术
面向对象方法(Object-Oriented Method)是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,简称OO(Object-Oriented)方法,是建立在“对象”概念基础上的方法学。对象是由数据和容许的操作组成的封装体,与客观实体有直接对应关系,一个对象类定义了具有相似性质的一组对象,而继承性是对具有层次关系的类的属性和操作进行共享的一种方式。所谓面向对象就是基于对象概念,以对象为中心,以类和继承为构造机制,来认识、理解、刻画客观世界和设计、构建相应的软件系统。
从上世纪80年代起,人们基于以往已提出的有关信息隐蔽和抽象数据类型等概念,以及由Modula2、Ada和Smalltalk和等语言所奠定的基础,再加上客观需求的推动,进行了大量的理论研究和实践探索,不同类型的面向对象语言(如:Object-c、Eiffel、c++、Java、Object-Pascal等)逐步地发展和建立起较完整的OO方法的概念理论体系和实用的软件系统。
面向对象方法具有以下优越性:
(1)强调从现实世界中客观存在的事物(对象)出发来认识问题域和构造系统,这就使系统开发者大大减少了对问题域的理解难度,从而使系统能更准确地反映问题域。
(2)运用人类日常的思维方法和原则(体现于OO方法的抽象、分类、继承、封装、消息通讯等基本原则)进行系统开发,有益于发挥人类的思维能力,并有效地控制了系统复杂性。
(3)对象的概念贯穿于开发过程的终,使各个开发阶段的系统成分具良好的对应,从而显著地提高了系统的开发效率与质量,并大大降低系统维护的难度。
(4)对象概念的一致性,使参与系统开发的各类人员在开发的各所段具有共同语言,有效地改善了人员之间的交流和协作。
(5)对象的相对稳定性和对易变因素隔离,增强了系统的应变能力。
(6)对象类之间的继承关系和对象的相对独立性,对软件复用提供了强有力的支持。
因为其优越性,面向对象方法已被广泛应用于程序设计语言、形式定义、设计方法学、操作系统、分布式系统、人工智能、实时系统、数据库、人机接口、计算机体系结构以及并发工程、综合集成工程等,在许多领域的应用都得到了很大的发展。
面向对象的软件工程包括下面几个部分:
(1)面向对象分析(object oriented analysis,OOA)
软件工程中的系统分析阶段,要求分析员和用户结合在一起,对用户的需求做出精确的分析和明确的表述,从大的方面解析软件系统应该做什么,而不是怎么去做。面向对象的分析要按照面向对象的概念和方法,在对任务的分析中,从客观存在的事物和事物之间的关系,归纳出有关的对象(对象的‘特征’和‘技能’)以及对象之间的联系,并将具有相同属性和行为的对象用一个类class来标识,建立一个能反映这时工作情况的需求模型,此时的模型是粗略的。
(2)面向对象设计(object oriented design,OOD)
根据面向对象分析阶段形成的需求模型,对每一部分分别进行具体的设计。首先是类的设计,类的设计可能包含多个层次(利用继承与派生机制)。然后以这些类为基础提出程序设计的思路和方法,包括对算法的设计。在设计阶段并不牵涉任何一门具体的计算机语言,而是用一种更通用的描述工具(如伪代码或流程图)来描述。
(3)面向对象编程(object oriented programming,OOP)
根据面向对象设计的结果,选择一种计算机语言把它写成程序。
(4)面向对象测试(object oriented test,OOT)
在写好程序后交给用户使用前,必须对程序进行严格的测试,测试的目的是发现程序中的错误并修正它。面向对的测试是用面向对象的方法进行测试,以类作为测试的基本单元。
(5)面向对象维护(object oriendted soft maintenance,OOSM)
正如对任何产品都需要进行售后服务和维护一样,软件在使用时也会出现一些问题,或者软件商想改进软件的性能,这就需要修改程序。由于使用了面向对象的方法开发程序,使用程序的维护比较容易。
面向对象的软件开发工程毫无疑问具有便于沟通交流、降低复杂度、便于复用等诸多优点,但是也存在着一些没有解决好的问题:
(1)由于目前面向对象数据库的效率问题,对象的持久化大都采用关系型数据库来实现,但面向对象的概念在关系型数据库中没有很好表达,致使面向对象的设计无法与对象的持久化有效衔接;
(2)为了实现对象持久化在关系型数据库中的实现,需要把面向对象的概念用关系型数据库的思维重新设计与表达,带来了很大的设计工作量;
(3)关系型数据库设计转换到面向对象的编码同时需要很大的工作量;
(4)面向对象的继承等特性在关系型数据库中没有完整表达也会带来沟通交流的困难。
由于面向对象数据库的效率不高,目前数据的持久化依然是以关系型数据库为主,这就给面向对象的设计开发技术带来了挑战,如何把面向对象的实体通过关系型数据库进行持久化保存,一直是软件开发探索的方向之一。为了解决对象的持久化问题,目前传统的方法是在设计阶段分别进行域模型设计(面向对象)和数据模型设计(面向关系),再进行对象-关系映射,实现对象与关系型数据库的相互转化,即持久化(对象实例存储到数据库)与加载(从数据库读取重新生成对象实例)。
现行的对象-关系映射中间件有很多,比较有名的是开源产品Hibernate,它轻量级封装了JDBC接口,实现了对数据库的保存、更新、删除、加载和查询等操作,是域模型与关系数据模型之间的桥梁。
软件设计阶段需要分别进行域模型的设计与数据模型的设计,同时还要进行对象-关系映射,在软件开发阶段还要进行对象-关系映射的实现,因此增加了工作量与实现难度,降低了交付效率,同时也会增加后续的维护成本。
发明内容
本发明实施例提供一种基于面向对象设计思想的存储方法、装置、设备及存储介质,以实现面向对象设计与面向对象编码的完整统一,减少设计与编码工作量,提高开发效率,减少沟通成本。
第一方面,本发明实施例提供了一种基于面向对象设计思想的存储方法,包括:
在处于软件设计阶段时,通过逻辑模型向数据模型的投影技术自动建立数据模型;
在处于软件编码阶段时,通过驱动引擎自动实现将对象实例存储到所述数据模型。
进一步的,还包括:
获取所述投影技术的投影规则和投影关系;
根据所述投影规则和投影关系进行自动封装。
进一步的,所述投影技术包括:将实体投影成关系型数据表、将属性投影成列、将一对多关系投影为外键列、将多对多关系投影为交集表、父子关系投影、主键的投影以及外键的投影中的至少一种。
进一步的,所述父子关系投影包括:
直接投影、复制投影和合并投影。
进一步的,通过逻辑模型向数据模型的投影技术自动建立数据模型包括:
制定投影表及字段的命名规则,并建立实体与投影表的对应关系和实体属性与字段名的对应关系;
根据所述投影表及字段的命名规则、实体与投影表的对应关系和实体属性与字段名的对应关系自动建立数据模型。
第二方面,本发明实施例还提供了一种基于面向对象设计思想的存储装置,该装置包括:
建立模块,用于在处于软件设计阶段时,通过逻辑模型向数据模型的投影技术自动建立数据模型;
存储模块,用于在处于软件编码阶段时,通过驱动引擎自动实现将对象实例存储到所述数据模型。
进一步的,还包括:
获取模块,用于获取所述投影技术的投影规则和投影关系;
封装模块,用于根据所述投影规则和投影关系进行自动封装。
进一步的,所述投影技术包括:将实体投影成关系型数据表、将属性投影成列、将一对多关系投影为外键列、将多对多关系投影为交集表、父子关系投影、主键的投影以及外键的投影中的至少一种。
第三方面,本发明实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如本发明实施例中任一所述的基于面向对象设计思想的存储方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例中任一所述的基于面向对象设计思想的存储方法。
本发明实施例通过在处于软件设计阶段时,通过逻辑模型向数据模型的投影技术自动建立数据模型;在处于软件编码阶段时,通过驱动引擎自动实现将对象实例存储到所述数据模型,能够实现面向对象设计与面向对象编码的完整统一,减少设计与编码工作量,提高开发效率,减少沟通成本。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1是本发明实施例一中的一种基于面向对象设计思想的存储方法的流程图;
图2A是本发明实施例二中的面向对象设计与编程实现原理图;
图2B是本发明实施例二中的面向对象投影示意图;
图2C是本发明实施例二中的域模型设计工具示意图;
图2D是本发明实施例二中的投影工具示意图;
图2E是本发明实施例二中的对象的持久化与面向对象编程的示意图;
图3是本发明实施例三中的一种基于面向对象设计思想的存储装置的结构示意图;
图4是本发明实施例四中的一种计算机设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
实施例一
图1为本发明实施例一提供的一种基于面向对象设计思想的存储方法的流程图,本实施例可适用于基于面向对象设计思想的存储的情况,该方法可以由本发明实施例中的XX的装置来执行,该装置可采用软件和/或硬件的方式实现,如图1所示,该方法具体包括如下步骤:
S110,在处于软件设计阶段时,通过逻辑模型向数据模型的投影技术自动建立数据模型。
具体的,通过改变对象持久化方式,在软件设计阶段通过逻辑模型向数据模型的投影技术自动建立数据模型,减少了数据模型设计与对象-关系映射过程。
S120,在处于软件编码阶段时,通过驱动引擎自动实现将对象实例存储到数据模型。
具体的,在软件编码阶段通过驱动引擎自动实现对象持久化与加载实例化代码,大大降低了设计、编码及维护工作量,同时因为去掉了对象-关系映射中间件的应用,软件效率也会提升。
可选的,还包括:
获取所述投影技术的投影规则和投影关系;
根据所述投影规则和投影关系进行自动封装。
具体的,针对于面向对象设计,实现了面向关系型数据库的投影,并通过对投影规则与投影关系的解析,实现了对实体的自动封装,把面向对象的设计与面向对象编程有机地链接在一起。
可选的,所述投影技术包括:将实体投影成关系型数据表、将属性投影成列、将一对多关系投影为外键列、将多对多关系投影为交集表、父子关系投影、主键的投影以及外键的投影中的至少一种。
可选的,所述父子关系投影包括:
直接投影、复制投影和合并投影。
其中,直接投影指的是实体被直接投影成表;复制投影指的是在继承关系结构的顶部,一些父类实体没有投影成表,而是把他们的行为(属性和关系)通过继承转移到了子类中;合并投影指的是在继承关系结构的底部,一些实体没有投影为表,而是把他们的行为(属性和关系)合并到他们的父类中,把他们的父类投影成表。
可选的,通过逻辑模型向数据模型的投影技术自动建立数据模型包括:
制定投影表及字段的命名规则,并建立实体与投影表的对应关系和实体属性与字段名的对应关系;
根据所述投影表及字段的命名规则、实体与投影表的对应关系和实体属性与字段名的对应关系自动建立数据模型。
具体的,由于数据库系统有一些保留字,同时对表名字段名的长度有限制,因此需要制定投影表及字段的命名规则,并建立实体与投影表的对应关系、实体属性与字段名的对应关系。
需要说明的是,对于复合数据类型的属性,会投影到一组字段。比如坐标在面向对象的模型中是一个属性,在投影成字段时,会有坐标系、横坐标、纵坐标等一组字段来表达。复合数据类型的属性中各成员与列组中各列的关系将在复合数据类型的结构中描述。
本实施例的技术方案,通过在处于软件设计阶段时,通过逻辑模型向数据模型的投影技术自动建立数据模型;在处于软件编码阶段时,通过驱动引擎自动实现将对象实例存储到所述数据模型,能够实现面向对象设计与面向对象编码的完整统一,减少设计与编码工作量,提高开发效率,减少沟通成本。
实施例二
在本实施例中,通过改变对象持久化方式,在软件设计阶段通过域模型向数据模型的投影技术自动建立数据模型,减少了数据模型设计与对象-关系映射过程,同时在软件编码阶段通过驱动引擎自动实现对象持久化与加载实例化代码,大大降低了设计、编码及维护工作量,同时因为去掉了对象-关系映射中间件的应用,软件效率也会提升。
如图2A所示,针对于面向对象设计,实现了面向关系型数据库的投影,并通过对投影规则与投影关系的解析,实现了对实体的自动封装,把面向对象的设计(OOD)与面向对象编程(OOP)有机地链接在一起,为面向对象的设计开发找到了一条新路。
投影操作原理,一般的投影方法是将实体投影成关系型数据表、将属性投影成列、将一对多关系拖影为外键列、将多对多关系投影为交集表。在面向对象的模型中,有一类跟关系型数据库不一样的概念是继承,即实体间有父子关系,子实体要继承父实体的所有属性。在面向对象模型投影成关系型数据表时,并不是所有的实体都投影成表,这里有三种不同的投影操作,如图2B所示,一种是直接投影(Direction,用“D”表达),该实体被直接投影成表,如图2B中的G实体。一种是复制投影(Replicate,用“R”表达),在继承关系结构的顶部,一些父类实体不投影成表,而是把他们的行为(属性和关系)通过继承转移到了子类中,如图2B中的A、C实体。一种是合并投影(Consolidate,用“C”表达),在继承关系结构的底部,一些实体也没有投影为表,而是把他们的行为(属性和关系)合并到他们的父类中,而把他们的父类投影成表,如图2B中的D、E实体的行为被合并到实体B中,并把B实体投影成表,同样,图2B中的H、I实体的行为被合并到实体F中,并投影成表。由于合并投影的相关实体的非空属性会有差异,在合并投影后将会把非空属性改为可空属性,在程序中控制其非空性。如果合并投影的相关实体的属性拥有相同的数据类型和相同的投影名,我们就假设他们具有相同的语义,并将他们合并。这样,我们就用一个单列或者单列的组合来描述所有子类中的重复属性。当合并投影时,会创建一个强制列(ENTITY_TYPE_NM),它的值被指定为合并子类的实体名,以此来区分各实例的所属实体。主键的投影,用数据库主键来唯一地识别一条记录。在复杂模型中数据库主键的使用非常重要,因为使用业务主键会很复杂(业务主键往往不止一个)。我们把数据库主键列的名称都投影成instance_s。为了表达数据的唯一性,数据库主键的值我们采用GUID填充。外键的投影,如果投影的属性是一个指向另一个实体的外键关系,而这个指向的实体又是一个父类,并且其属性复制投影到了其子类投影的表中,那么这个外键就表达成一个一对多的外键,指向所有这些子类投影的表。由于一般关系型数据库不能表达这种一对多的外键关系,我们将记录这种关系,在程序中去控制这种关联性。其他情况的外键关系可以直接在数据库中表达。
投影表名与字段名命名约定:由于数据库系统有一些保留字,同时对表名字段名的长度有限制,因此我们要制定投影表及字段的命名规则,并建立实体与投影表的对应关系、实体属性与字段名的对应关系。对于复合数据类型的属性,会投影到一组字段,我们叫列组。比如坐标在面向对象的模型中是一个属性,在投影成字段时,会有坐标系、横坐标、纵坐标等一组字段来表达。复合数据类型的属性中各成员与列组中各列的关系将在复合数据类型的结构中描述。集合类型属性的投影,顺序集合,如LIST和ARRAY,会产生一列来表达顺序。此列的名称加后缀"_L"。
实体类型属性的投影,面向对象模型中实体类型的属性表示该属性是该类型实体的一个实例,在关系型数据库中就是表示一个外键。在面向对象的模型中,这种外键分两个情况,一种情况是这个实体直接投影成表了或者该实体合并到其父类实体成表了,这种情况外键指向只有一个表,这种外键与关系型数据库的外键概念一致,直接投影成关系型数据库的外键关系,字段采用“投影字段名+‘_S’”的表达方式;另一种情况是这个实体是一个父类,复制投影到了其子类实体所投影的表中,这样这个外键指向的表就有多个,这种一对多的外键关系不能在关系型数据库中表达,用一个列组来表达,列组中的字段分别用“投影字段名+‘_S’”、“投影字段名+‘_E’”、“投影字段名+‘_T’”三个字段表达,分别表示“指向表的唯一标识(instance_s)”、“实体名”、“实体投影表名”,实体类型属性的投影实现如下表一所示:
表一
简单数据类型的投影,如表2所示,面向对象的简单数据类型与关系型数据库中列的数据类型非常接近。简单数据类型的列名不加后缀,投影成与此数据类型相对应的关系型数据库列的数据类型.
表二
复合数据类型属性的投影,复合数据类型属性的投影由多个数据列的列组来表示,列组中各列用列名后缀来区分。复合数据类型投影的列组中的每一列都不可或缺(例如,列组中的一列被赋值,那么所有列都要被赋值)。如何选择复合数据类型由逻辑属性定义。复合数据类型和他们对应表列的数据类型以及其后缀可查看复合数据类型属性的投影,具体的复合数据类型属性的投影如表三所示:
表三
注意,组列中的列如果是外键列,那么外键后缀添加在类型后缀的后面。比如,如果度量单元实体复制到它的子类中,那么QUANTITY数据类型会生成四个表列:一个没有后缀,一个有后缀'_U_S',一个有后缀'_U_E',一个有后缀'_U_T'。因此,如果所需实体投影为表,那么生成的列比较少。体数据类型属性的投影,体数据类型是指在一个二进制流中存储了固定结构的多值信息的一种数据类型,如对空间点线面体的表达,又如在石油行业中对测井曲线、地震体数据的表达等。体数据类型在关系型数据库的存储有两种方式,一种是应用数据库的BLOB字段直接存储文件流,一种是在数据库中存储体数据文件流的索引和路径,在另外的文件系统中存储实际的体数据文件。体数据类型属性会投影成三个字段,分别表达BLOB方式存储所存的字段,外部文件方式存储时的地址以及存储方式的描述。提数据类型属性的投影如表四所示。
表四
体数据本身是一个对象实体,对它的持久化和加载实例化也需要一个比较完备的方案,来满足对体数据投影技术的支持。目前对于体数据有多种成熟的编解码方案,如XML、JSON等,但XML与JSON这种ASCII编解码方式效率不高,编解码后的ASCII文件较二进制文件有显著增大,只适用于HTTP协议的传输,对于对象的持久化与加载实例化在效率上不满足要求。由于Protobuff技术采用二进制编码方案,编解码效率高、编码后数据体小,且支持C++、java等语言的序列化,可以自动生成这几种语言的面向对象代码,我们采用这一技术实现体数据的格式描述与编解码。用Protobuff技术采用Message定义文件定义体数据的数据结构,并通过Protobuff编译器自动生成各语言类库(java或.net),实现对象的持久化存储(生成二进制流序列化文件)与加载实例化(从二进制序列化文件反序列化成对象实例)。
面向对象模型设计与投影工具的实现,域模型设计工具,目前市面上域模型设计工具有很多,如PowerDesigner、Rational Rose等,为了实现域模型的投影,我们设计了域模型设计工具,完成实体的定义(包括实体的继承关系定义等)、属性的定义等,与商用的面向对象建模工具功能一致。设计这个工具的目的是建立自己的逻辑模型元数据库,为后续模型驱动的实现提供元数据支持。如图2C所示,为域模型设计工具。投影工具实现面向对象的域模型向关系型数据模型的转换,主要实现对投影规则的制定与投影的实施。如图2D所示,投影规则制定包括各实体的投影策略制定(三种:D直接投影、C合并投影、R复制投影)、投影表名的确定、投影字段名的确定等。为了快速实现投影,表名与字段名的确定一般是参照具体的关系型数据库系统对表名、字段名的长度限制与保留字限制制定一个实体名、属性名到表名、字段名的一个转换规则进行批量设置。
投影实施就是在制定投影规则的基础上,完成域模型中所有实体所有属性针对于一个具体数据库系统(不同的数据库系统其数据类型会有差异)的投影,形成数据模型,并把域模型中对象/属性与数据模型中的表/字段的关系记录下来,同时生成建库脚本。对象的持久化与面向对象编程的实现,域模型向关系型数据库投影机制的实现,自动建立了对象-关系映射,为自动化实现对象的持久化与加载实例化创造了条件。如图2E所示,通过驱动引擎对域模型中数据类型与具体编程语言的映射规则以及上述对象-关系映射元数据的解析,将自动生成各语言的对象封装代码。
本发明实施例公开了面向对象域模型向关系型数据库投影技术及投影工具;对象的持久化与面向对象编程的自动实现技术及驱动引擎。
本发明实施例,减少了数据模型设计环节和对象-关系映射环境,大大减少了设计工作量;通过驱动引擎自动生成对象封装代码,大大减少了开发工作量;数据模型通过域模型投影生成,域模型的升级可以自动驱动数据模型的升级同时驱动实现对象封装代码的升级,大大降低了维护成本。
本实施例的技术方案,通过在处于软件设计阶段时,通过逻辑模型向数据模型的投影技术自动建立数据模型;在处于软件编码阶段时,通过驱动引擎自动实现将对象实例存储到所述数据模型,能够实现面向对象设计与面向对象编码的完整统一,减少设计与编码工作量,提高开发效率,减少沟通成本。
实施例三
图3为本发明实施例三提供的一种基于面向对象设计思想的存储装置的结构示意图。本实施例可适用于基于面向对象设计思想的存储的情况,该装置可采用软件和/或硬件的方式实现,该装置可集成在任何提供基于面向对象设计思想的存储功能的设备中,如图3所示,所述基于面向对象设计思想的存储装置具体包括:建立模块310和存储模块320。
其中,建立模块310,用于在处于软件设计阶段时,通过逻辑模型向数据模型的投影技术自动建立数据模型;
存储模块320,用于在处于软件编码阶段时,通过驱动引擎自动实现将对象实例存储到所述数据模型。
可选的,还包括:
获取模块,用于获取所述投影技术的投影规则和投影关系;
封装模块,用于根据所述投影规则和投影关系进行自动封装。
可选的,所述投影技术包括:将实体投影成关系型数据表、将属性投影成列、将一对多关系投影为外键列、将多对多关系投影为交集表、父子关系投影、主键的投影以及外键的投影中的至少一种。
上述产品可执行本发明任意实施例所提供的方法,具备执行方法相应的功能模块和有益效果。
本实施例的技术方案,通过在处于软件设计阶段时,通过逻辑模型向数据模型的投影技术自动建立数据模型;在处于软件编码阶段时,通过驱动引擎自动实现将对象实例存储到所述数据模型,能够实现面向对象设计与面向对象编码的完整统一,减少设计与编码工作量,提高开发效率,减少沟通成本。
实施例四
图4为本发明实施例四中的一种计算机设备的结构示意图。图4示出了适于用来实现本发明实施方式的示例性计算机设备12的框图。图4显示的计算机设备12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图4所示,计算机设备12以通用计算设备的形式表现。计算机设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图4未显示,通常称为“硬盘驱动器”)。尽管图4中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
计算机设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机设备12交互的设备通信,和/或与使得该计算机设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。另外,本实施例中的计算机设备12,显示器24不是作为独立个体存在,而是嵌入镜面中,在显示器24的显示面不予显示时,显示器24的显示面与镜面从视觉上融为一体。并且,计算机设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机设备12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的基于面向对象设计思想的存储方法:在处于软件设计阶段时,通过逻辑模型向数据模型的投影技术自动建立数据模型;在处于软件编码阶段时,通过驱动引擎自动实现将对象实例存储到所述数据模型。
实施例五
本发明实施例五提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请所有发明实施例提供的基于面向对象设计思想的存储方法:在处于软件设计阶段时,通过逻辑模型向数据模型的投影技术自动建立数据模型;在处于软件编码阶段时,通过驱动引擎自动实现将对象实例存储到所述数据模型。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (10)

1.一种基于面向对象设计思想的存储方法,其特征在于,包括:
在处于软件设计阶段时,通过逻辑模型向数据模型的投影技术自动建立数据模型;
在处于软件编码阶段时,通过驱动引擎自动实现将对象实例存储到所述数据模型。
2.根据权利要求1所述的方法,其特征在于,还包括:
获取所述投影技术的投影规则和投影关系;
根据所述投影规则和投影关系进行自动封装。
3.根据权利要求1所述的方法,其特征在于,所述投影技术包括:将实体投影成关系型数据表、将属性投影成列、将一对多关系投影为外键列、将多对多关系投影为交集表、父子关系投影、主键的投影以及外键的投影中的至少一种。
4.根据权利要求3所述的方法,其特征在于,所述父子关系投影包括:
直接投影、复制投影和合并投影。
5.根据权利要求1所述的方法,其特征在于,通过逻辑模型向数据模型的投影技术自动建立数据模型包括:
制定投影表及字段的命名规则,并建立实体与投影表的对应关系和实体属性与字段名的对应关系;
根据所述投影表及字段的命名规则、实体与投影表的对应关系和实体属性与字段名的对应关系自动建立数据模型。
6.一种基于面向对象设计思想的存储装置,其特征在于,包括:
建立模块,用于在处于软件设计阶段时,通过逻辑模型向数据模型的投影技术自动建立数据模型;
存储模块,用于在处于软件编码阶段时,通过驱动引擎自动实现将对象实例存储到所述数据模型。
7.根据权利要求6所述的装置,其特征在于,还包括:
获取模块,用于获取所述投影技术的投影规则和投影关系;
封装模块,用于根据所述投影规则和投影关系进行自动封装。
8.根据权利要求6所述的装置,其特征在于,所述投影技术包括:将实体投影成关系型数据表、将属性投影成列、将一对多关系投影为外键列、将多对多关系投影为交集表、父子关系投影、主键的投影以及外键的投影中的至少一种。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-5中任一所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-5中任一所述的方法。
CN201811437136.3A 2018-11-28 2018-11-28 一种基于面向对象设计思想的存储方法及装置 Active CN109542409B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811437136.3A CN109542409B (zh) 2018-11-28 2018-11-28 一种基于面向对象设计思想的存储方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811437136.3A CN109542409B (zh) 2018-11-28 2018-11-28 一种基于面向对象设计思想的存储方法及装置

Publications (2)

Publication Number Publication Date
CN109542409A true CN109542409A (zh) 2019-03-29
CN109542409B CN109542409B (zh) 2022-09-30

Family

ID=65850736

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811437136.3A Active CN109542409B (zh) 2018-11-28 2018-11-28 一种基于面向对象设计思想的存储方法及装置

Country Status (1)

Country Link
CN (1) CN109542409B (zh)

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5295256A (en) * 1990-12-14 1994-03-15 Racal-Datacom, Inc. Automatic storage of persistent objects in a relational schema
CN101046810A (zh) * 2006-05-26 2007-10-03 华为技术有限公司 自动建立关系模型的系统及其方法
US20100131570A1 (en) * 2008-11-21 2010-05-27 Sap Ag Methods and structures for utilizing reusable custom-defined nestable compound data types to permit product variations within an exisitng taxonomy
CN102571720A (zh) * 2010-12-27 2012-07-11 中国移动通信集团辽宁有限公司 一种异构信息内容处理方法及装置
CN103049251A (zh) * 2011-10-17 2013-04-17 中国移动通信集团公司 一种数据库持久层装置及数据库操作方法
CN103425467A (zh) * 2012-05-18 2013-12-04 汪巨森 基于iec61850的程序生成方法
CN103455316A (zh) * 2012-07-27 2013-12-18 安徽工业大学 一种基于类的代码生成器
CN103761077A (zh) * 2013-10-17 2014-04-30 国家电网公司 一种将cim模型到关系数据库映射建模的方法
CN103902634A (zh) * 2012-12-30 2014-07-02 航天信息股份有限公司 利用Adapter实现View组件与数据库字段自动绑定的方法
CN106484429A (zh) * 2016-10-30 2017-03-08 合肥微匠信息科技有限公司 一种基于Fountain模型的面向对象软件开发方法

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5295256A (en) * 1990-12-14 1994-03-15 Racal-Datacom, Inc. Automatic storage of persistent objects in a relational schema
CN101046810A (zh) * 2006-05-26 2007-10-03 华为技术有限公司 自动建立关系模型的系统及其方法
US20100131570A1 (en) * 2008-11-21 2010-05-27 Sap Ag Methods and structures for utilizing reusable custom-defined nestable compound data types to permit product variations within an exisitng taxonomy
CN102571720A (zh) * 2010-12-27 2012-07-11 中国移动通信集团辽宁有限公司 一种异构信息内容处理方法及装置
CN103049251A (zh) * 2011-10-17 2013-04-17 中国移动通信集团公司 一种数据库持久层装置及数据库操作方法
CN103425467A (zh) * 2012-05-18 2013-12-04 汪巨森 基于iec61850的程序生成方法
CN103455316A (zh) * 2012-07-27 2013-12-18 安徽工业大学 一种基于类的代码生成器
CN103902634A (zh) * 2012-12-30 2014-07-02 航天信息股份有限公司 利用Adapter实现View组件与数据库字段自动绑定的方法
CN103761077A (zh) * 2013-10-17 2014-04-30 国家电网公司 一种将cim模型到关系数据库映射建模的方法
CN106484429A (zh) * 2016-10-30 2017-03-08 合肥微匠信息科技有限公司 一种基于Fountain模型的面向对象软件开发方法

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
CHUTAO: ""ORM框架-VB/C#.Net实体代码生成工具(EntitysCodeGenerate)【ECG 4.2】的相关使用"", 《HTTPS://BLOG.CSDN.NET/CHUTAO/ARTICLE/DETAILS/6082143》 *
CSDN_KENNETH: ""hibernate持久化类&持久化对象(五)"", 《HTTPS://BLOG.CSDN.NET/CSDN_KENNETH/ARTICLE/DETAILS/78568751》 *
PIOTR ZIEMNIAK等: ""Object Oriented Application Cooperation Methods with Relational Database (ORM) based on J2EE Technology"", 《2007 9TH INTERNATIONAL CONFERENCE - THE EXPERIENCE OF DESIGNING AND APPLICATIONS OF CAD SYSTEMS IN MICROELECTRONICS》 *
WEIXIN_30764771: "对象关系与数据表映射", 《HTTPS://BLOG.CSDN.NET/WEIXIN_30764771/ARTICLE/DETAILS/99106413》 *
李颖: "基于关系数据库的对象持久化及性能研究", 《中国优秀硕士学位全文数据库信息科技辑》 *

Also Published As

Publication number Publication date
CN109542409B (zh) 2022-09-30

Similar Documents

Publication Publication Date Title
Borrmann et al. Specification and implementation of directional operators in a 3D spatial query language for building information models
CN102341781B (zh) 软件测试台生成
Spaccapietra et al. GIS databases: From multiscale to multirepresentation
CN102609255B (zh) 一种Spring IOC配置文件的生成方法
CN110134724A (zh) 一种建筑信息模型的数据智能提取与显示系统及方法
CN111213137A (zh) 源基础设施数据与bis概念模式的对齐
CN111400389B (zh) 基于ifc扩展的运维5d-bim数据集成共享系统
CN111857691B (zh) 一种软件体系结构恢复方法和装置
CN103186620A (zh) 一种cim模型映射方法
Flotyński et al. Conceptual semantic representation of 3d content
Sammartano et al. Hybrid GIS-BIM approach for the Torino digital-twin: The implementation of a floor-level 3D city geodatabase
Renolen Conceptual modelling and spatiotemporal information systems: how to model the real world
Flotyński Semantic modelling of interactive 3d content with domain-specific ontologies
CN105550176A (zh) 一种关系数据库与xml的基本映射方法
CN116610380A (zh) 一种支持异构建模工具数据互操作性的SysML模型协同开发系统
CN109542409A (zh) 一种基于面向对象设计思想的存储方法及装置
Pina et al. Semantic visualization of 3D urban environments
Dobos Management and visualisation of non-linear history of polygonal 3d models
Krückhans ISO and OGC compliant database technology for the development of simulation object databases
Fu Hierarchical modeling of large-scale systems using relational databases
Finat et al. Constructors of geometric primitives in domain ontologies for urban environments
Rawat Interoperable Geo-spatial Data Model in the Context of the Indian NSDI.
Lee 3d urban modeling and rendering with high resolution remote sensing imagery on mobile 3d and web 3d environments; system architecture and prototype implementation
Hoppen et al. Combining 3D simulation technology with object-oriented databases: A database oriented approach to virtual reality systems
Xiao et al. Transformation from System model to FACE data model based on metadata mapping

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