JEE – Design Patternsa78khan/cs446/additional-material/scribe/1… · JEE – Design Patterns...

15
WATERLOO CHERITON SCHOOL OF COMPUTER SCIENCE JEE – Design Patterns JEE – Design Patterns Data Access Objects Data Access Objects CS 446/646 ECE452 Jun 15 th , 2011 IMPORTANT NOTICE TO STUDENTS These slides are NOT to be used as a replacement for student notes. These slides are sometimes vague and incomplete on purpose to spark class discussions

Transcript of JEE – Design Patternsa78khan/cs446/additional-material/scribe/1… · JEE – Design Patterns...

Page 1: JEE – Design Patternsa78khan/cs446/additional-material/scribe/1… · JEE – Design Patterns Data Access Objects CS 446/646 ECE452 Jun ... Data Access Object (DAO) to abstract

WATERLOOCHERITON SCHOOL OFCOMPUTER SCIENCE

JEE – Design PatternsJEE – Design PatternsData Access ObjectsData Access Objects

CS 446/646 ECE452Jun 15th, 2011

IMPORTANT NOTICE TO STUDENTS

These slides are NOT to be used as a replacement for student notes.These slides are sometimes vague and incomplete on purpose to spark class discussions

Page 2: JEE – Design Patternsa78khan/cs446/additional-material/scribe/1… · JEE – Design Patterns Data Access Objects CS 446/646 ECE452 Jun ... Data Access Object (DAO) to abstract

2WATERLOOCHERITON SCHOOL OFCOMPUTER SCIENCE

MotivationIntent● abstract access to data repository

Page 3: JEE – Design Patternsa78khan/cs446/additional-material/scribe/1… · JEE – Design Patterns Data Access Objects CS 446/646 ECE452 Jun ... Data Access Object (DAO) to abstract

3WATERLOOCHERITON SCHOOL OFCOMPUTER SCIENCE

MotivationForces● enterprise applications will work with heterogeneous

data-stores– persistence storage APIs– type of the data-store

● relational database, flat files, OO db, legacy systems

– merging access logic into the components make them less portable

Solution● Data Access Object (DAO) to abstract and encapsulate

all access to the data source

Page 4: JEE – Design Patternsa78khan/cs446/additional-material/scribe/1… · JEE – Design Patterns Data Access Objects CS 446/646 ECE452 Jun ... Data Access Object (DAO) to abstract

4WATERLOOCHERITON SCHOOL OFCOMPUTER SCIENCE

Data Access Object

Client Tier Server Tier

Presentation

Data Tier

Business

DataSource

Application

Controllers

Services

Data Access

A

A

W

W

Web

Page 5: JEE – Design Patternsa78khan/cs446/additional-material/scribe/1… · JEE – Design Patterns Data Access Objects CS 446/646 ECE452 Jun ... Data Access Object (DAO) to abstract

5WATERLOOCHERITON SCHOOL OFCOMPUTER SCIENCE

Data Access Object

Page 6: JEE – Design Patternsa78khan/cs446/additional-material/scribe/1… · JEE – Design Patterns Data Access Objects CS 446/646 ECE452 Jun ... Data Access Object (DAO) to abstract

6WATERLOOCHERITON SCHOOL OFCOMPUTER SCIENCE

Example

what design pattern should we use for OracleConnection?

have we achieved database neutrality?

Page 7: JEE – Design Patternsa78khan/cs446/additional-material/scribe/1… · JEE – Design Patterns Data Access Objects CS 446/646 ECE452 Jun ... Data Access Object (DAO) to abstract

7WATERLOOCHERITON SCHOOL OFCOMPUTER SCIENCE

Use Abstract Factory

Page 8: JEE – Design Patternsa78khan/cs446/additional-material/scribe/1… · JEE – Design Patterns Data Access Objects CS 446/646 ECE452 Jun ... Data Access Object (DAO) to abstract

8WATERLOOCHERITON SCHOOL OFCOMPUTER SCIENCE

Use Abstract Factory

Page 9: JEE – Design Patternsa78khan/cs446/additional-material/scribe/1… · JEE – Design Patterns Data Access Objects CS 446/646 ECE452 Jun ... Data Access Object (DAO) to abstract

9WATERLOOCHERITON SCHOOL OFCOMPUTER SCIENCEhttp://java.sun.com/blueprints/corej2eepatterns/Patterns/DataAccessObject.html

Page 10: JEE – Design Patternsa78khan/cs446/additional-material/scribe/1… · JEE – Design Patterns Data Access Objects CS 446/646 ECE452 Jun ... Data Access Object (DAO) to abstract

10WATERLOOCHERITON SCHOOL OFCOMPUTER SCIENCEhttp://java.sun.com/blueprints/corej2eepatterns/Patterns/DataAccessObject.html

Page 11: JEE – Design Patternsa78khan/cs446/additional-material/scribe/1… · JEE – Design Patterns Data Access Objects CS 446/646 ECE452 Jun ... Data Access Object (DAO) to abstract

11WATERLOOCHERITON SCHOOL OFCOMPUTER SCIENCE

ConcernsOR Mapping

User

id

fname Group

id

name

lname

belongs

Page 12: JEE – Design Patternsa78khan/cs446/additional-material/scribe/1… · JEE – Design Patterns Data Access Objects CS 446/646 ECE452 Jun ... Data Access Object (DAO) to abstract

12WATERLOOCHERITON SCHOOL OFCOMPUTER SCIENCE

ConcernsOR Mapping● identifiers● foreign keys● how can we maps objects to database tables?

– example user & groups● how do we map associations

– object to object– object to list of objects– object to map of objects

Page 13: JEE – Design Patternsa78khan/cs446/additional-material/scribe/1… · JEE – Design Patterns Data Access Objects CS 446/646 ECE452 Jun ... Data Access Object (DAO) to abstract

13WATERLOOCHERITON SCHOOL OFCOMPUTER SCIENCE

ConcernsOR Mapping● mapping inheritance

– table per class hierarchy● strategy: identify each subtype by a unique discriminator

ID TYPE AMOUNT

1 CREDIT 20.00

2 CASH 45.45

3 CHEQUE 2.00

what are some of the limitations?

Page 14: JEE – Design Patternsa78khan/cs446/additional-material/scribe/1… · JEE – Design Patterns Data Access Objects CS 446/646 ECE452 Jun ... Data Access Object (DAO) to abstract

14WATERLOOCHERITON SCHOOL OFCOMPUTER SCIENCE

ConcernsOR Mapping● mapping inheritance

– table per sub class● one table to represent the common attributes● one table per sub-class● need to maintain associations

– independent table per subclass● what do we loose here?● probably most flexible

Page 15: JEE – Design Patternsa78khan/cs446/additional-material/scribe/1… · JEE – Design Patterns Data Access Objects CS 446/646 ECE452 Jun ... Data Access Object (DAO) to abstract

15WATERLOOCHERITON SCHOOL OFCOMPUTER SCIENCE

ConcernsObject Life Cycle● entity objects are complex (composite)

– delete a single user object– what are we deleting (?,?)

● cascading deletes– what qualifies for cascading delete– constraints (FK, not null etc...)

Tools● Hibernate● Oracle TopLink