If we look at the table from the section called “Library comparison” we may see changes, mostly improvements in many of the listed areas:
IOPC 2 added another mapping type - the ADT mapping and further enhanced the O/R mapping capabilities.
IOPC 2 supports read-only databases, it even supports inheritance between non-OID classes (tables) if the involved tables share the same set of keys.
The library is based on a modular design allowing it to be used in several configurations and with various database drivers.
IOPC 2 provides a reflection feature which allows users to inspect the structure of reflection capable classes at run-time. Reflection works almost transparently as it needs no descriptive macros from the application developers.
Reflection provides metamodel description for the O/R mapping layer which offer effortless object persistence services to the application developers. However, there are some limitations when compared to the IOPC predecessor which result from the exchange of OpenC++ for GCCXML - for example the need to use enhanced data types in some scenarios. More on this can be found further in the text. See the section called “Usage transparency differences from IOPC”
Remaining topics describing the IOPC 2 implementation are discussed in the following chapters. Thesis conclusion in Chapter 6, Conclusion contains final library comparison and evaluation.