18143453325 在线咨询 在线咨询
18143453325 在线咨询
所在位置: 首页 > 营销资讯 > 信息时代 > ODMG语言绑定(数据库)

ODMG语言绑定(数据库)

时间:2022-11-04 12:30:01 | 来源:信息时代

时间:2022-11-04 12:30:01 来源:信息时代

    ODMG语言绑定 : 说明对象定义语言/对象操作语言的结构如何映射到编程语言结构。ODMG目前支持与C++,Java和Smalltalk语言的绑定。
1. C++绑定(c++ binding)
C++绑定通过引入具有持久和临时实例的类集合把对象模型映射到C++中,这些类称为可持久化类(persistence-capable classes),包括五个部分的内容:
(1) ODMG对象模型到C++的映射: 一个ODMG的对象类型映射为C++的一个类,对象模型的结构概念映射为C++的构造结构或嵌入在某个类中的类。ODMG对象模型包含集合类型产生器、集合类型和集合实例,集合类型产生器映射为C++的模板类,集合类型映射为集合类,集合实例映射为这些集合类的实例。ODMG的数组集合映射为C++的d_Varray类,C++不直接支持关系,但通过提供维护关系的特定模板类的实例来实现,类d_Extent〈T〉提供一个可持久化类T的范围接口,C++不支持键的声明。
(2) C++ODL: C++与ODL的绑定被表示为类库和对标准C++类定义机制的扩展,类库提供在ODMG对象模型中定义概念的类和函数。C++ODL提供数据库模式的描述,把数据库模式描述为一个包含属性、关系和操作的对象类的集合,其风格与C++程序中声明部分一致,这些类的实例可以通过C++OML操作。在C++类库中,凡是实现与ODMG对象模型接口的特性都以d为前缀,如基本数据类型d_String,d_Short,集合类型d_List、d_Set、d_Bag,对应Iterator类的d_Iterator,对应extent类的d Extent,对应事务的d_Trancaction以及对应数据库的d Database等,并且还为数据库模式中的每一个类T定义了一个模板d_Ref(T),它涉及类T的持久对象和临时对象。关系通过包含一个引用(一对一关系)或一个集合(一对多关系)来处理,操作说明与标准C++语言函数说明基本一致。
(3) C++OML:对象操纵语言(OML)用来说明在应用程序中如何检索和操作数据对象,C++OML所表达的语法和语义与标准类库的语境中标准C++的语法和语义相同,C++OML包括对象的创建、删除、修改和引用。
对于对象操纵语言,new算子被重载使其可以创建持久或临时对象。为了创建一个持久对象,必须提供数据库名和一个对象名。对象删除通过调用d_Ref:delete object()成员函数进行,对象的修改则调用函数d_object:mark_modified()进行,对象引用是模板类d Ref<T>的实例,其他对对象特性的访问如属性、关系、操作等与标准C++语言基本一致。
(4) C++OQL:C++OQL把对象查询语言的语义映射成C++语言。在C++ODL/OML程序中的对象查询语言的查询可以通过下列方法执行: 一是使用类d_Collection 的成员函数query;二是使用d_OQL_Query接口。
(5)模式访问: 描述通过一个C++类库访问ODMG数据库模式的接口,模式信息是基于对象模型中描述的元数据。C++的模式定义在有些方面不同于ODL中的独立于语言、抽象的模式说明,为使模式访问遵循C++程序设计常规,提供给C++程序员直观的API,在API中包含C++ODL扩展,使其是ODMG ODL的一个超集。模式访问API被结构化为一个面向对象的框架,只有操纵元信息的内部函数被定义,而不是定义所有的类结构和详细的内部实现细节。ODMS实现可以选择模式数据库的实际物理表示,ODL模式列出描述模式的所有类,使用ODL关系表达这些类之间的关系。图1是具体的C++绑定的实现示意图。


图1 C++语言绑定的实现


为创建一个可执行应用程序,C++对象定义语言声明传给C++对象定义语言预处理器,这个处理器的功能是产生一个包含对象数据库定义并存储对象数据管理系统元数据的C++头文件,然后含有对象操纵语言的C++用户程序与已经产生的含有对象数据库定义的C++头文件一起进行编译,最后将编译器输出的对象代码与对象数据管理系统运行库链接,产生所要的可执行映像。ODL/OML只是指明对象的逻辑特征和用来操纵它们的操作,不涉及对象的物理存储,以及与对象存储的物理表示相联系的簇集或内存管理问题。
2. Smalltalk绑定(smalltalk binding)
Smalltalk绑定把ODMG对象模型映射成Smalltalk语言,它是基于OMG的Smalltalk的接口定义语言实现绑定的。绑定可以由处理ODL声明和生成元对象图的一个ODL编译器自动实现,并构成数据库的模式。这些元对象提供类型信息以允许Smalltalk绑定支持所需的ODL类型语义,这些元对象的全体集合定义数据库的全部模式并提供与OMG接口库同样的服务能力。表达数据库模式的元对象可以由Smalltalk应用程序通过它们的标准接口编程访问和修改,这样的应用程序,又称为一个绑定生成器,可用来从元对象中生成Smalltalk类和方法框架,该绑定生成器将解决与ODMG的Smalltalk绑定相关的类型-类映射选择问题。元对象对再生成ODL声明也提供了足够的信息。上述实现Smalltalk语言绑定的构件之间的关系如图2所示。


图2 Smalltalk语言绑定的实现


3. Java绑定(java binding)
Java绑定提供两种方式声明可持久化的Java类: 已存在的Java类可以转换成可持久化类; Java类声明(数据库模式也一样)可以由ODMG ODL的预处理器自动产生。支持上述能力的ODMG实现方法有三种: 一是采用后处理器(post-processor),该处理方式把由Java编译器产生的Java.class文件作为输入,并产生新的支持持久性的修改后的字节码;二是采用预处理器(pre-processor),该处理方式在Java源代码进入Java编译器之前修改代码; 三是修改Java解释器。因为Java语言本身并不具有可以实现上述绑定方式的全部功能,且Java绑定必须使用标准的Java语法,所以有必要区分由数据库系统使用的称为可持久化类的特殊类,这些类具有持久和临时实例,只有这些类的实例可以持久化。同时因为一个Java类定义并不包含全部的对象模型信息,因此有必要在类定义中增加特性文件,以说明该类是可持久化类。Java绑定的具体内容与C++绑定和Smalltalk绑定基本相同,也是把ODMG对象模型映射成Java语言。
在ODMG绑定的程序设计语言的选择方面,基本规则是具体的与ODMG绑定的程序设计语言应是一个单独的统一类型系统,该语言应能跨越程序设计语言和数据库,且需遵守基本程序设计语言的语法和语义。

74
73
25
news

版权所有© 亿企邦 1997-2022 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭