Framework based on design patterns for providing persistence in object-oriented programming languages

This paper describes an approach to providing object persistence in object-oriented programming languages without modifying the run-time system or the language itself. By successively applying design patterns such as the Serializer, Factory Method, and Strategy patterns we develop an object-oriented framework for providing object persistence. The advantages of object-orientation are highlighted: structured classification through class-hierarchies, extensibility and promotion of reuse. The framework clearly separates persistence control from storage control. A hierarchy of different storage types, useful in different application domains, is introduced. The framework does not rely on any kind of special programming language features. It only uses basic object-oriented programming techniques, and is therefore implementable in any object-oriented programming language. An experimental implementation in Ada 95 is presented.

[1]  Sacha Krakowiak,et al.  PerDiS: Design, Implementation, and Use of a PERsistent DIstributed Store , 1999, Advances in Distributed Systems.

[2]  Jörg Kienzle,et al.  Auction system design using open multithreaded transactions , 2002, Proceedings of the Seventh IEEE International Workshop on Object-Oriented Real-Time Dependable Systems. (WORDS 2002).

[3]  Partha Dasgupta,et al.  The Clouds distributed operating system: functional description, implementation details and related work , 1988, [1988] Proceedings. The 8th International Conference on Distributed.

[4]  Malcolm P. Atkinson,et al.  An orthogonally persistent Java , 1996, SGMD.

[5]  Butler W. Lampson,et al.  Crash Recovery in a Distributed Data Storage System , 1981 .

[6]  David C. J. Matthews A Persistent Storage System for Poly and ML , 1987 .

[7]  Andreas Reuter,et al.  Transaction Processing: Concepts and Techniques , 1992 .

[8]  Jörg Kienzle,et al.  On Persistent and Reliable Streaming in Ada , 2000, Ada-Europe.

[9]  Grady Booch,et al.  Object-Oriented Design with Applications , 1990 .

[10]  Jörg Kienzle,et al.  Open Multithreaded Transactions: A Transaction Model for Concurrent Object-Oriented Programming , 2003 .

[11]  Brian Randell,et al.  System structure for software fault tolerance , 1975, IEEE Transactions on Software Engineering.

[12]  Michael J. Oudshoorn,et al.  Orthogonal persistence and Ada , 1994, TRI-Ada '94.

[13]  Laurent Daynès,et al.  Implementation of automated fine‐granularity locking in a persistent programming language , 2000 .

[14]  R. Connor,et al.  Design Issues for Persistent Java: a type-safe, object-oriented, orthogonally persistent system , 1996 .

[15]  Jörg Kienzle,et al.  Transaction Support for Ada , 2001, Ada-Europe.

[16]  Jörg Kienzle,et al.  Open multithreaded transactions: keeping threads and exceptions under control , 2001, Proceedings Sixth International Workshop on Object-Oriented Real-Time Dependable Systems.

[17]  Santosh K. Shrivastava,et al.  The Design and Implementation of Arjuna , 1995, Comput. Syst..

[18]  David C. J. Matthews,et al.  Poly manual , 1985, SIGP.

[19]  John Rosenberg,et al.  Grasshopper: An Orthogonally Persistent Operating System , 1994, Comput. Syst..

[20]  Ronald Morrison,et al.  An Approach to Persistent Programming , 1989, Comput. J..

[21]  Laurent Daynès,et al.  Implementation of automated fine‐granularity locking in a persistent programming language , 2000, Softw. Pract. Exp..

[22]  Peter Buneman,et al.  Types and persistence in database programming languages , 1987, CSUR.

[23]  Michael J. Oudshoorn,et al.  Beyond Ada 95: The Addition of Persistence and Its Consequences , 1996, Ada-Europe.

[24]  Lily B. Mummert,et al.  Camelot and Avalon: A Distributed Transaction Facility , 1991 .

[25]  Guy L. Steele,et al.  The Java Language Specification , 1996 .

[26]  Dirk Riehle,et al.  Pattern Languages of Program Design 3 , 1997 .

[27]  John Rosenberg,et al.  The MONADS Architecture - A Layered View , 1990, Workshop on Persistent Objects.

[28]  Jörg Kienzle,et al.  Object-Oriented Stable Storage Based on Mirroring , 2001, Ada-Europe.

[29]  Malcolm P. Atkinson,et al.  PS-algol: an algol with a persistent heap , 1982, SIGP.

[30]  Hermann Kopetz,et al.  Fault tolerance, principles and practice , 1990 .