Table of Contents

1. Introduction
2. Persistence layer requirements
The identity of persistent objects
Database mapping requirements
Object-relational databases
Database mapping requirements continued
Querying
Caching
Reflection
Library architecture
Conclusion
3. Evolution of the IOPC 2 library
POLiTe
Architecture
The data access layer
Metamodel and object-relational mapping.
Persistent object manipulation
Querying
Conclusion
POLiTe 2
Architecture of the POLiTe 2 library
The cache layer
Persistent object manipulation
Querying
Conclusion
IOPC
Features of the library
Architecture of the library
IOPC SP
IOPC DBSC
IOPC LIB
Conclusion
Library comparison
4. Basic concepts of the IOPC 2 library
Library architecture
Obtaining metamodel description
Object relational mapping in the IOPC 2 library
Base classes
ADT mapping
Mapping algorithm prerequisites
The mapping algorithm
Conclusion
5. Architecture of the IOPC 2 library
Architecture overview
Common services
Thread synchronization classes
Class metadata
Utilities
Database access
Basic classes
Driver features
The metamodel
The metamodel classes
Enhanced data types
Class metadata
iopcsp
Usage transparency differences from IOPC
The persistence layer - iopclib
Database mapping
Persistent object manipulation
The cache layer
Querying
6. Conclusion
References
A. User's guide
Library initialization and termination
Inspecting objects with reflection
Class metadata
Basic database access
Driver features
Driver implementation
Persistent object manipulation
Querying persistent objects
Caching
B. Sample schema SQL scripts
C. Metadata overview
D. DVD content

List of Figures

1.1. IOPC 2 evolution
2.1. Example class hierarchy
2.2. Vertical mapping tables
2.3. Horizontal mapping tables
2.4. Filtered mapping tables
2.5. Combined mapping tables
2.6. Proposed architecture of the O/R mapping library
3.1. Architecture of the POLiTe library
3.2. POLiTe persistent object states
3.3. POLiTe references
3.4. Architecture of the POLiTe 2 library
3.5. Caches in the POLiTe 2 library
3.6. States of the POLiTe 2 objects
3.7. Dereferencing DbPtr in POLiTe 2
3.8. The IOPC library workflow
3.9. POLiTe library components used in IOPC LIB
3.10. Structure of the IOPC LIB
4.1. Reflection using the GCCXML
4.2. IOPC 2 base classes
4.3. SQL schema generated from classes using combined mapping
4.4. Top-level part of the object-relational mapping algorithm
4.5. Description of the Insert_Row method. Not used for ADT mapping.
4.6. Inserting objects using filtered mapping
4.7. Iterative loading algorithm
5.1. Overview of the IOPC 2 architecture
5.2. Basic classes of the database layer
5.3. Using the decorator pattern
5.4. Oracle 10g database driver extensions and driver features
5.5. The iopcmeta classes
5.6. Structure of the enhanced data type classes
5.7. Classes involved in the database mapping process
5.8. Classes manipulating with persistent objects
5.9. The bePersistent operation
5.10. Database pointer and cache pointer interaction
5.11. Interaction with the O/R mapping services
5.12. Basic classes of the cache layer. VoidCache architecture.
5.13. Extended interface of the cache layer.
5.14. The Query classes