In the object database domain, persistence is the quality of an object to
retain its ability for polymorphic behavior even while store in some
secondary device.  This means the object always knows how to dispatch
when read into a program's primary memory.

In Ada 95 this capability is reflected in Stream_IO's ability to preserve
the tag of the object when storing it into a file.  Upon reading such an
object, any dispatching operation can be invoked because of the persistence
of the tag.  In this sense, it is not the only data which is persistent (of
course it is) but also the operations on the data.

This is fundamental challenge of object database software:  how do we make
both the data and the operations on the data persistent?

Although the Ada "tag" is useful for this purpose in some environments,
it is not portable across all compilers. Each compiler has its own model
for a tag.  Therefore, the tag, while a useful feature for designing an
object database that will always be processed by the same compiler on
the same machine, does not satisfy the larger problem of persistence as
understood in the world of object database design.

For a good paper on this subject in the context of Ada 95, see the work of
Michael Card of Lockheed-Martin in Syracuse. I think it is available on one
of the Ada web sites.

Richard Riehle

Richard Riehle
[log in to unmask]
AdaWorks Software Engineering
Suite 30
2555 Park Boulevard
Palo Alto, CA 94306
(650) 328-1815
FAX  328-1112
http://www.adaworks.com