CSC/ECE 517 Summer 2008/wiki3 1 th: Difference between revisions

From Expertiza_Wiki
Jump to navigation Jump to search
Line 31: Line 31:
===ORM in Java===
===ORM in Java===


Three popular frameworks exist for Java Enterprise programming: Oracle's [http://www.oracle.com/technology/products/ias/toplink/index.html TopLink], [http://www.hibernate.org Hibernate], and Sun's [http://java.sun.com/jdo/ JDO].
ORM has really taken off in the Java development world. Three popular frameworks exist for Java Enterprise programming: Oracle's [http://www.oracle.com/technology/products/ias/toplink/index.html TopLink], [http://www.hibernate.org Hibernate], and Sun's [http://java.sun.com/jdo/ JDO].





Revision as of 22:55, 23 July 2008

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

ORM has really taken off in the Java development world. Three popular frameworks exist for Java Enterprise programming: 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 and ASP Classic

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://soci.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.hibernate.org/

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.google.com/search?hl=en&q=object+oriented+database+design+pattern+%28faq+OR+tutorial%29&btnG=Google+Search

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.service-architecture.com/object-oriented-databases//articles/object-relational_mapping.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

http://en.wikipedia.org/wiki/Object_database

http://www.polepos.org/