764_18.2_ORM

Download Report

Transcript 764_18.2_ORM

CIS 764 Database Systems Engineering
L18.2 : Object Relational Mapping …
….Object persistence
Fall 2008
http://www.cis.ksu.edu
1
CIS 764 Database Systems Engineering
Objects are transient ..
they last as long as run environment is alive
(as long as a middleware session)
Object persistence is the automatic save/load of object
state to some persistent storage form
(e.g. persisting between sessions).
Example storage:
binary data files (e.g. Word doc)
XML files (e.g. UML XMI)
relational data base (using SQL) <<<<
Object data base
Note: first three save only the state,
not the methods.
http://www.idt.mdh.se/kurser/cd5130/msl/2006lp4/reports/drafts/object_persistence.pdf
Fall 2008
http://www.cis.ksu.edu
2
CIS 764 Database Systems Engineering
Object persistence
there are two issues:
the form (format) of persistent storage
the mapping of scalar data values.
(e.g. Java and Oracle data types are not identical).
Fall 2008
http://www.cis.ksu.edu
3
CIS 764 Database Systems Engineering
Objects to relational data base (using SQL)
is Object-Relational-Mapping.
It can go both ways:
objects -> tables
tables -> objects (you used this in ADF assignment)
Which way do we want to go?
Fall 2008
http://www.cis.ksu.edu
4
CIS 764 Database Systems Engineering
Which way do we want to go?
Ans1: Design at the conceptual level:
ER
conceptual domain model (class model)
Ans2: Build web applications for existing tables.
Ans2a: tuning the DB and sync the model
Fall 2008
http://www.cis.ksu.edu
5
CIS 764 Database Systems Engineering
Impedance mismatch …
refers to the difference in concepts between object models
and table model.
There is (IMHO) a reasonable mapping of object concepts to tables;
not so clear mapping backwards.
See following for discussions of mismatch:
http://c2.com/cgi/wiki?ObjectRelationalMapping
http://en.wikipedia.org/wiki/Object-Relational_impedance_mismatch
Fall 2008
http://www.cis.ksu.edu
6
CIS 764 Database Systems Engineering
Impedance mismatch … some issues:
* single persistent object may spans several tables
↔
*
objects "ownership“
*
Objects have "getters";
expensive to submit several queries for single row;
use Value object w “putAll” , “getAll” methods.
*
RDBMSs are faster on global queries;
object faster for small scope (single objects).
*
inefficient to keep objects synchronized with database
Fall 2008
relational
http://www.cis.ksu.edu
7
CIS 764 Database Systems Engineering
One suggestion is to map to object database:
not for 764 focus …
inefficient for object persistence in 3 layer model
not likely transition for existing DB applications.
Fall 2008
http://www.cis.ksu.edu
8
CIS 764 Database Systems Engineering
OR tools available for most language platforms and target DBMS:
http://en.wikipedia.org/wiki/Object-relational_mapping
http://en.wikipedia.org/wiki/List_of_object-relational_mapping_software
Fall 2008
http://www.cis.ksu.edu
9
CIS 764 Database Systems Engineering
Toplink ( 1990 Smalltalk, ~ 1995 Java) purchased by Oracle in 2002
objects and beans to DB or XML (targets multiple DBs)
integrated with JDeveloper;
http://www.oracle.com/technology/products/ias/toplink/index.html
http://en.wikipedia.org/wiki/TopLink
… donated for open source Eclipse project,
… used for Sun EJB3 reference implemenation
…. You implicitly used it for ADF homework
Fall 2008
http://www.cis.ksu.edu
10
CIS 764 Database Systems Engineering
JDO
Java Data Objects (~2003)
http://java.sun.com/products/jdo/
a standard interface-based Java model abstraction of persistence;
applications are portable,
and independent of the underlying database
(provided there is a JDO mapping)
can be used with POJO or with EJB;
uses a persistence manager class;
but ... has not been a dominant technology
Fall 2008
http://www.cis.ksu.edu
11
CIS 764 Database Systems Engineering
Hibernate http://www.hibernate.org/ (~2004)
express queries in SQL extension (HQL) or native SQL
or with an object-oriented Criteria and Example API;
open source project ;
entity manager for EJB3.0;
generates a configuration file that defines the mapping
key component of JBoss (http://www.jboss.com/products/index)
integrates with Eclipse
http://www.myeclipseide.com/ContentExpress-display-ceid-61.html
the major ORM tool .
(See also Gardner Hibernate slides)
Fall 2008
http://www.cis.ksu.edu
12
CIS 764 Database Systems Engineering
NHibernate ….
port of the core to the .NET Framework;
Suspend2 http://www.suspend2.net/
… Linux equivalent
Fall 2008
http://www.cis.ksu.edu
13
CIS 764 Database Systems Engineering
Ruby-on-Rails http://www.rubyonrails.org/
a "full-stack" framework for developing DB web applications;
follows the Model-View-Control pattern;
includes Active Record persistence framework;
an "agile programming" approach ...
based on the Ruby language
http://www.ruby-lang.org/en/ (~1995)
“Active Record” name comes from the pattern for object
that wraps a DB row ( e.g. an entity ejb).
See also Enterprise patterns <<<<<<<<<<<<<<<<<<<<
http://www.martinfowler.com/eaaCatalog/index.html
Fall 2008
http://www.cis.ksu.edu
14
CIS 764 Database Systems Engineering
Django
Fall 2008
http://www.djangoproject.com/ (~2005)
a high-level Python Web DB framework
includes ORM …
configuration defined in Python code.
Includes a sample app in the tutorial .
http://www.cis.ksu.edu
15
CIS 764 Database Systems Engineering
end.
Fall 2008
http://www.cis.ksu.edu
16