Twenty years of object-relational mapping: A survey on patterns, solutions, and their implications on application design

Abstract Context Almost twenty years after the first release of TopLink for Java, Object-Relational Mapping Solutions (ORMSs) are available at every popular development platform, providing useful tools for developers to deal with the impedance mismatch problem. However, no matter how ubiquitous these solutions are, this essential problem remains as challenging as ever. Different solutions, each with a particular vocabulary, are difficult to learn, and make the impedance problem looks deceptively simpler than it really is. Objective The objective of this paper is to identify, discuss, and organize the knowledge concerning ORMSs, helping designers towards making better informed decisions about designing and implementing their models, focusing at the static view of persistence mapping. Method This paper presents a survey with nine ORMSs, selected from the top ten development platforms in popularity. Each ORMS was assessed, by documentation review and experience, in relation to architectural and structural patterns, selected from literature, and its characteristics and implementation options, including platform specific particularities. Results We found out that all studied ORMSs followed architectural and structural patterns in the literature, but often with distinct nomenclature, and some singularities. Many decisions, depending on how patterns are implemented and configured, affect how class models should be adapted, in order to create practical mappings to the database. Conclusion This survey identified what structural patterns each ORMS followed, highlighting major structural decisions a designer must take, and its consequences, in order to turn analysis models into object oriented systems. It also offers a pattern based set of characteristics that developers can use as a baseline to make their own assessments of ORMSs.

[1]  Luca Cabibbo,et al.  Managing Inheritance Hierarchies in Object/Relational Mapping Tools , 2005, CAiSE.

[2]  Ralf Lämmel,et al.  Mappings Make Data Processing Go 'Round , 2005, GTTSE.

[3]  David Maier,et al.  Representing Database Programs as Objects , 1990, DBPL.

[4]  Ahmed E. Hassan,et al.  Detecting performance anti-patterns for applications developed using object-relational mapping , 2014, ICSE.

[5]  Christian Bauer,et al.  Hibernate in action , 2005 .

[6]  Roger S. Pressman,et al.  Software Engineering: A Practitioner's Approach , 1982 .

[7]  Wolfgang Keller Mapping Objects to Tables A Pattern Language , 1997 .

[8]  Martin Fowler,et al.  Analysis patterns - reusable object models , 1996, Addison-Wesley series in object-oriented software engineering.

[9]  Ralph Johnson,et al.  Connecting Business Objects to Relational Databases , 1998 .

[10]  Jennifer Widom,et al.  Database Systems: The Complete Book , 2001 .

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

[12]  José A. Blakeley,et al.  Anatomy of the ADO.NET entity framework , 2007, SIGMOD '07.

[13]  Umeshwar Dayal,et al.  On the correct translation of update operations on relational views , 1982, TODS.

[14]  David Maier,et al.  Making smalltalk a database system , 1984, SIGMOD '84.

[15]  Ramez Elmasri,et al.  Fundamentals of Database Systems , 1989 .

[16]  Wolfgang Keller Object/Relational Access Layers A Roadmap, Missing Links and More Patterns , 2004 .

[17]  Giorgio Orsi,et al.  The relational model is dead, SQL is dead, and I don't feel so good myself , 2013, SGMD.

[18]  Bill Karwin,et al.  SQL Antipatterns: Avoiding the Pitfalls of Database Programming , 2010 .

[19]  Martin Fowler,et al.  Patterns of Enterprise Application Architecture , 2002 .

[20]  Arthur M. Keller,et al.  Algorithms for translating view updates to database updates for views involving selections, projections, and joins , 1985, PODS.

[21]  Scott W. Ambler,et al.  Building Object Applications That Work: Your Step-By-Step Handbook for Developing Robust Systems wit , 1997 .

[22]  R. G. G. Cattell,et al.  Recent books , 2000, IEEE Spectrum.

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

[24]  Ralf Lämmel,et al.  Mappings Make Data Processing Go 'Round An Inter-paradigmatic Mapping Tutorial , 2006 .

[25]  James Martin Managing the data-base environment , 1983 .

[26]  Clinton Begin,et al.  iBatis in action , 2007 .

[27]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[28]  Philip A. Bernstein,et al.  Model management 2.0: manipulating richer mappings , 2007, SIGMOD '07.

[29]  H. W. Buff Why Codd's Rule No. 6 Must be Reformulated , 1988, SIGMOD Rec..

[30]  Kevin Waugh,et al.  A Classification of Object-Relational Impedance Mismatch , 2009, 2009 First International Confernce on Advances in Databases, Knowledge, and Data Applications.

[31]  Scott Ambler,et al.  Agile Database Techniques: Effective Strategies for the Agile Software Developer , 2003 .

[32]  Kyle G. Brown,et al.  Crossing Chasms: a pattern language for object-RDBMS integration: the static patterns , 1996 .