CSC/ECE 517 Summer 2008/wiki3 1 th
RDB/OO Patterns
- It would be good if OO programs could interact with OO databases, but alas, relational databases have a 99% market share. This has led to many attempts to access them from OO languages. Design patterns for doing this have been developed, starting with "crossing chasms" and extending to Rails' ActiveRecord. Investigate the various approaches for marrying OO programs to relational databases, comparing them in terms of ease of programming, robustness, and efficiency.
Introduction
This article explores object-relation mapping (ORM), a programming technique that bridges object-oriented languages against relational databases, and compares them against more traditional approaches to database programming such as stored procedures and dynamic SQL. In the process, we examine basic design patterns for bridging this gap, and evaluate several popular ORM frameworks found in popular program languages in the process.
One of the primary problems that object-relational mapping (ORM) attempts to solve is that of transparent object persistence, which allows an object to outlive the process that created it. The state of an object can be stored to disk, and an object with the same state can be re-created in the future. This object data is typically internally stored in a relational database using SQL.
Unfortunately, relational databases lie at the core of any modern Enterprise application, and such tabular representation of SQL data is fundamentally different than the network of objects used in object-oriented applications. ORM allows us to interact with business objects directly in an object-oriented domain model, instead of having to work with rows and columns at the programming level.
Design Patterns
Comparison
In this section, we discuss the advantages and disadvantages of using object-relational mapping techniques in application development.
Ease of Programming
Robustness
Using an ORM layer provides database independence.
Efficiency
Implementations
ORM in Java
In recent years, Java has experienced a paradigm for complex heavy-weight frameworks such as Enterprise Java Beans to more light-weight agile frameworks that rely instead of simple Plain Old Java Objects (POJOs). This in turn, has increased the popularity of ORM for Java developers.
Indeed, Object-relational mapping is especially popular in the Java community, compared. for example to .NET developers. [1] Although a plethora of ORM frameworks exist for Java, among the most popular and widespread frameworks include Oracle's TopLink, Hibernate, and Sun's JDO.
http://www.kuro5hin.org/story/2006/3/11/1001/81803
ORM in Ruby on Rails
http://wiki.rubyonrails.org/rails/pages/ActiveRecord
ORM in Microsoft .NET
LINQ in Microsoft .NET
http://msdn.microsoft.com/en-us/netframework/aa904594.aspx
Dynamic SQL in PHP, ASP Classic, and JDBC
Dynamic SQL is not really an ORM technique at all; it is only mentioned here for completeness.
Summary
Links
http://www.google.com/search?hl=en&q=ORM&btnG=Google+Search
http://en.wikipedia.org/wiki/Object-relational_mapping
http://en.wikipedia.org/wiki/Object-relational_database
http://en.wikipedia.org/wiki/List_of_object-relational_database_management_systems
http://www.aspfree.com/c/a/Database/Introduction-to-RDBMS-OODBMS-and-ORDBMS/
http://developers.slashdot.org/article.pl?sid=03/09/23/2016224&threshold=4&mode=nested
http://en.wikipedia.org/wiki/Hibernate_%28Java%29
http://en.wikipedia.org/wiki/List_of_object-relational_mapping_software
http://en.wikipedia.org/wiki/Object-relational_impedance_mismatch
http://www.google.com/search?hl=en&q=RDB+OO+patterns+faq&btnG=Search
http://ootips.org/persistent-objects.html
http://dtemplatelib.sourceforge.net/
http://trac.butterfat.net/public/StactiveRecord
http://www.metro-design-dev.com/modeler_portal.htm
http://www.ksc.com/articles/patternlanguage.htm
http://en.wikipedia.org/wiki/ActiveRecord_%28Rails%29
http://www.agiledata.org/essays/mappingObjects.html
http://www.visualbuilder.com/java/hibernate/tutorial/
http://www.hibernate.org/hib_docs/reference/en/html/index.html
http://www.hibernate.org/hib_docs/v3/api/index.html
http://www.hibernate.org/hib_docs/v3/api/org/hibernate/SessionFactory.html
http://www.hibernate.org/hib_docs/v3/api/org/hibernate/Session.html
http://www.service-architecture.com/object-relational-mapping/articles/transparent_persistence.html
http://www.service-architecture.com/object-oriented-databases/articles/odbms_faq.html
http://www.amazon.ca/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612
http://portal.acm.org/citation.cfm?id=253810
http://www.pearsonhighered.com/educator/academic/course/0,3119,604655,00.html
http://www.sigplan.org/oopsla/oopsla98/ap/tutorial/tovervw.htm
http://www.cmcrossroads.com/bradapp/links/oo-links.html
http://www.edcomp.com/results/Relational+and+Object+oriented+Database+Management+System+.html
http://cbbrowne.com/info/rdbms.html
http://en.wikipedia.org/wiki/Object-oriented_programming
http://www.sei.cmu.edu/str/descriptions/oodatabase_body.html
http://www.object-relational.com/articles/when_object-relational_mapping_should_be_used.html
http://www.service-architecture.com/object-oriented-databases/
http://www.arrakis.es/~devis/oo.html
http://www.google.com/search?hl=en&q=object+oriented+database+site%3Anist.gov&btnG=Google+Search
http://csrc.nist.gov/nissc/1996/papers/NISSC96/paper072_073_074/SCO_.PDF
http://madgeek.com/Articles/ORMapping/EN/mapping.htm