Building scalable database applications : object-oriented design, architectures, and implementations

Foreword. Preface. Acknowledgments. About the Author. I. AN OBJECT-ORIENTED VIEW ON PERSISTENCE. 1. A New Generation of Software. From Data to Information. Improving Software Quality. Databases Everywhere. To Have and to Hold. Concentrating on the Essence. The Importance of Scalability. Application Program Interfaces. The Road to Follow. 2. The Database Community Today. Walking among Dinosaurs. Database Usage. Database Users. Designing Database Applications. Relational Databases. Client / Server Systems. Distributed Software. Problems with Traditional Systems. 4GL: The Solution? Object-Oriented Databases. Preserving Openness. Summary. 3. An Object-Oriented View on Database Applications. Data-Driven Software Design. Supporting Multiple Applications. Object-Oriented Software Design. The Object Model. Example: Student Administration. Business Models and Supporting Multiple Applications. C++, Java, or Smalltalk: The Ultimate Answer? Building Reusable Software. Toward Open Client / Server Applications. Object Orientation and Client / Server Design. User Interfaces. Analogy between User Interfaces and Databases. Object-Oriented or Relational? Persistence from a Different Angle. Persistence and Separation of Concerns. Safety Issues. Summary. II. AN ARCHITECTURE FOR OBJECT PERSISTENCE. 4. Making Objects Persistent. Introduction. Basic Requirements of a Persistence Framework. Obtaining Scalability. Interfacing with a Relational World: Problems to Conquer. Abstracting the Database. An Architecture for Object Persistence. 5. Abstracting the Database. A Persistent Container Class. Basic Functionality of PSet. Implementing the Persistence Architecture. Resolving the Impedance Mismatch. Reading and Writing Objects. Direct Instances of PSet. Searching for Objects. Supporting Multiple Technologies. 6. Encapsulating Data Access. Deriving from PSet. Example: Class City. Using Class City. Member Objects. Derived IM Resolvers. Class Extension. Link-Time Decoupling. Reuse and Migration to Other Technologies. III. IMPLEMENTING BUSINESS MODELS. 7. Designing Business Objects. Developing a Simple Invoicing System. Searching Compound Objects. Object ID versus Primary Key. Developing Generic IM Resolvers. An OID-Based Reference Class. Supporting Existing Database Layouts. Versioning. Stability of Program Code against Schema Changes. Storing Multimedia Objects. Efficiency. 8. Inheritance of Persistent Objects. Specialization: Using Inheritance for Reuse. Generalization: Using Inheritance for Polymorphism. Using Generalizations as Member Objects. Inheritance in Relational Database Systems. Designing Reusable Software Components. Summary. 9. Associations. Many-to-One Relationships. Attributes versus Associations. Collections: One-to-Many Relationships. Associations and Reuse. Many-to-Many Relationships. A Closer Look at Associations. Associations as Independent Entities. Referential Integrity. 10. Transaction Management and Concurrency Control. The Transaction. The ACID Test. Transaction Management Exceeds the Database Level. Concurrency Control: Locking. Example: A Transaction Class. Transactions in Relational Database Systems. Using Transactions. Nested Transactions. Distributed Database Systems. Other Levels of Concurrency. Lock Notification through Call-Back Functions. 11. The Front End. Analogy between User Interfaces and Databases. Separating the User Interface from the Business Model. What to Put Where. Navigating through Persistent Sets. 12. Case Study: An Electronic Telephone Directory. Project Definition. Comparing Development Approaches. Designing the User Interface. The Database Model. Designing the Business Model. Comparing the Business Model and the Database Model. Implementing the Business Objects. Making Classes Persistent. Impedance Mismatch Examples. Implementing the User Interface. 13. Toward Open Applications. Third-Party Access to Your Application's Data. Standard Report Generators and Query Tools. Informationbases. Interoperability with Other Applications. Implementing an Informationbase. Architecture for Next-Generation Software. 14. Conclusion. Appendix. DBtools-Based Implementation of Scoop. PSet. DataSet. IM_Resolver. Resolving Impedance Mismatch. Building the Select Statement. 0201310139T04062001