CSC/ECE 517 Fall 2007/wiki2 2 d4: Difference between revisions
Jump to navigation
Jump to search
Line 6: | Line 6: | ||
== Object relational | == Object Relational Mapping (ORM) == | ||
This is technique for mapping object-oriented (O-O) class structures to relational database storage structures. | |||
=== Why these techniques are necessary? === | |||
# There is not a one-to-one relationship between database object types and O-O language types | |||
== Definition == | == Definition == |
Revision as of 16:03, 22 October 2007
Topic
Object-relational mapping. Ruby's ActiveRecord is one attempt to allow an object-oriented program to use a relational database. The Crossing Chasms pattern is another. Look up several approaches to mapping relational databases to o-o programs, include hyperlinks to all of them, and explain how they differ. Report on the strengths of various approaches (making sure to credit the authors for their insights)
Object Relational Mapping (ORM)
This is technique for mapping object-oriented (O-O) class structures to relational database storage structures.
Why these techniques are necessary?
- There is not a one-to-one relationship between database object types and O-O language types
Definition
Need
Approaches
Popular Approaches
Crossing the Chasm Pattern Language
One of the first ORMs (see http://www.agiledata.org/essays/mappingObjects.html)
Active Record
Limitations
- No Foreign Key Support: Although RoR lets you define has_many relationships, it makes no effort to create foreign key constraints in the underlying database to ensure relational integrity.
- No Multi-column Primary Key Support: Multi-column primary keys are a staple of relational database schema definition.
Data Mapper
Lafcadio
- Another ORM for Ruby that currently only supports MySQL databases
- Treats each table row as a class object
- see http://lafcadio.rubyforge.org/ and http://www.zenspider.com/dl/rubyconf2003/lafcadio.pdf
Popular Products
These patterns in practice can be found in
Hibernate
Oslick