764_18.2_ORM - People

cabbagepatchtapeInternet και Εφαρμογές Web

5 Φεβ 2013 (πριν από 4 χρόνια και 6 μήνες)

213 εμφανίσεις

Fall 2008

http://www.cis.ksu.edu

1

CIS 764 Database Systems Engineering

L18.2 : Object Relational Mapping …



….Object persistence

















Fall 2008

http://www.cis.ksu.edu

2

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

3

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

4

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

5

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

6

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

7

CIS 764 Database Systems Engineering


Impedance mismatch … some issues:





* single persistent object


may spans several


tables







* objects "ownership“




relational










* 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

http://www.cis.ksu.edu

8

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

9

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

10

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

11

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

12

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

13

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

14

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

15

CIS 764 Database Systems Engineering


Django




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 .















Fall 2008

http://www.cis.ksu.edu

16

CIS 764 Database Systems Engineering






end.