ODMG 3.0 was developed by the Object Data Management Group (ODMG).
The ODMG is a consortium of vendors and interested parties that work on specifications for object database and object-relational mapping products.
ODMG 3.0 is a portability specification. It is designed to allow for portable
applications that could run on more than one product. ODMG 3.0 uses the Java, C++, and Smalltalk languages as much as
possible, to allow for the transparent integration of object programming
languages.
The major components of ODMG 3.0 specification are:
Object Model. The common data model supported by ODMG implementations is
based on the OMG Object Model. The OMG core model was designed to be a common denominator for object request brokers, object database systems, object programming languages, and other applications. In keeping with the OMG Architecture,
a profile has been designed for their model, adding components (e.g., relationships) to the OMG core object model to support
the ODMG needs.
Object Specification Languages. The two specification languages are the Object Definition Language (ODL) and Object Interchange Format (OIF) languages. ODL is a specification language used to define the object types that conform to the ODMG Object
Model and is based on the OMG IDL. OIF is a specification language used to dump and load
from a file or set of files.
Object Query Language. This is a declarative (nonprocedural) language for querying and updating objects.
SQL-92 was used as the basis for OQL.
C++ Language Binding. This is the binding of ODMG implementations
to C++. This is called the C++ OML, or object manipulation language. The C++
binding also includes a version of the ODL that uses C++ syntax, a mechanism
to invoke OQL, and procedures for operations and transactions.
Smalltalk Language Binding. This is the binding of ODMG implementations to
Smalltalk. It defines the binding in terms of the mapping between ODL and Smalltalk, which is based on the OMG Smalltalk binding for
IDL. The Smalltalk binding also includes a mechanism to invoke OQL and procedures for operations on databases and transactions.
Java Language Binding. This is the binding between the ODMG Object Model (ODL and OML) and the Java programming language as defined by the Java 2 Platform. The Java language binding also includes a mechanism to invoke OQL and procedures for operations
and transactions.
It is possible to read and write the same database from C++, Smalltalk, and Java, as long as the programmer stays within the common subset of supported
data types. Note that, unlike SQL in relational systems, the ODMG data manipulation languages are tailored to specific application programming languages, in order to provide a single, integrated environment for programming and data manipulation.
This is called transparent persistence.
Such transparent persistence is illustrated by the following diagram and contrasts with the
database sublanguage of SQL and its variants. In this diagram, you only see the
host programming language and no database sublanguage or call-level interface as
in JDBC.
An example of a host statement in Java that creates a new Person instance
would be:
person = new Person();
person.ssan = "999999999";
person.name = "Doug Barry";
This code fragment would be all the code necessary to create a new person.
There is no database sublanguage or call interface. If you wanted to manipulate
this object in Java, you could use the object directly. Also see transparent
persistence vs. JDBC call-level interface (new
window).
For more information on transparent persistence, see:
The Object Data Standard: ODMG 3.0 (The Morgan Kaufmann Series in Data Management Systems) by R. G. Cattell, Douglas K. Barry, Mark Berler, Jeff Eastman, David Jordan, Craig Russell, Olaf Schadow, Torsten Stanienda, Fernando Velez Average Customer Review: based on 1 review. Customer Review: A well-written, concise reference covering a diverse range of topics that will be of interest to all who know the frustration of cramming complex OO systems into relational tables. From a complete design pattern for Object and Object Relational database systems, to design patterns for declarative language symantics; from C++ and Java ...