24
March 31, 2003 91.3913 R McFadyen 1 Persistent Objects Persistent objects are objects that continue to exist after the application program terminates Persistence is provided by a DBMS • ACID property “D” Two main categories • OODBMS • RDBMS Sections Intro, 34.1, 2, 4, 5, 6, 7, 8, 9, 19

March 31, 200391.3913 R McFadyen1 Persistent Objects Persistent objects are objects that continue to exist after the application program terminates Persistence

  • View
    234

  • Download
    0

Embed Size (px)

Citation preview

Page 1: March 31, 200391.3913 R McFadyen1 Persistent Objects Persistent objects are objects that continue to exist after the application program terminates Persistence

March 31, 2003 91.3913 R McFadyen 1

Persistent Objects

Persistent objects are objects that continue to exist after the application program terminates

Persistence is provided by a DBMS

• ACID property “D”

Two main categories

• OODBMS

• RDBMS

Sections

Intro, 34.1, 2, 4, 5, 6, 7, 8, 9, 19

Page 2: March 31, 200391.3913 R McFadyen1 Persistent Objects Persistent objects are objects that continue to exist after the application program terminates Persistence

March 31, 2003 91.3913 R McFadyen 2

Persistent Objects

To use an RDBMS, we require an object to relational mapping service

• persistence service is a subsystem within the Technical Services Layer

• mismatch between record-oriented and object-oriented representations of data

• recommendation : buy, not build

• provides functions such as store, retrieve, modify, commit, rollback

Page 3: March 31, 200391.3913 R McFadyen1 Persistent Objects Persistent objects are objects that continue to exist after the application program terminates Persistence

March 31, 2003 91.3913 R McFadyen 3

Key Ideas

Mapping

There are two schemas: object and relational. We need a mapping that translates from one to the other.

Object Identity

Records and objects have a unique identifier

Materialization/Dematerialization

need to be able to translate the non-object representation to an object representation, and vice versa

Lazy Materialization

Some objects are not materialized all-at-once; part of the object may be done first, and other parts later on

Page 4: March 31, 200391.3913 R McFadyen1 Persistent Objects Persistent objects are objects that continue to exist after the application program terminates Persistence

March 31, 2003 91.3913 R McFadyen 4

Patterns

Representing Objects as TablesObject IdentifierRepresenting Object Associations as Tables

one-to-oneone-to-manymany-to-manymany-to-many with an Association Class

Aggregation and CompositionSuperclass/Subclass

Page 5: March 31, 200391.3913 R McFadyen1 Persistent Objects Persistent objects are objects that continue to exist after the application program terminates Persistence

March 31, 2003 91.3913 R McFadyen 5

Each class becomes a table

Representing Objects as Tables patterndefine a table for each persistent object class

Some mappings are straight forward We require 1NF tables

Class An object The table

Many of these patterns mentioned come from a paper “Crossing Chasms: A Pattern Language for Object-RDBMS” published in 1996 in Pattern Languages of Program Design

Page 6: March 31, 200391.3913 R McFadyen1 Persistent Objects Persistent objects are objects that continue to exist after the application program terminates Persistence

March 31, 2003 91.3913 R McFadyen 6

<<Table>> stereotype

We can indicate tables in UML using the stereotype:<<Table>>

Note you can use UML for designing relational databases

Page 7: March 31, 200391.3913 R McFadyen1 Persistent Objects Persistent objects are objects that continue to exist after the application program terminates Persistence

March 31, 2003 91.3913 R McFadyen 7

OIDs

The OID will help prevent the system from instantiating the same object twice and to help find an instance

Objects have an OID that is used as the PK in a relational table.

Each object is uniquely mapped to a row in the table

Object Identifier Patternassign an OID to each record and object

Page 8: March 31, 200391.3913 R McFadyen1 Persistent Objects Persistent objects are objects that continue to exist after the application program terminates Persistence

March 31, 2003 91.3913 R McFadyen 8

Façade

Persistence subsystem will have a Façade that provides access to its services

façadeRequesting a ProductSpecification with a specific OID

Page 9: March 31, 200391.3913 R McFadyen1 Persistent Objects Persistent objects are objects that continue to exist after the application program terminates Persistence

March 31, 2003 91.3913 R McFadyen 9

Representing Relationships in Tables

Representing Object Associations as Tables pattern

one-to-one

place an OID FK in one or both tables representing the objects in the association

or, create an associative table that records the OIDs of each object in the association

or, could merge the two classes into one table

Consider

Store Registerhouses1 1

Page 10: March 31, 200391.3913 R McFadyen1 Persistent Objects Persistent objects are objects that continue to exist after the application program terminates Persistence

March 31, 2003 91.3913 R McFadyen 10

Representing Relationships in Tables

Representing Object Associations as Tables pattern

one-to-many

create an associative table that records the OIDs of each object in relationship

or, could use a Foreign Key on the Many side

Consider

ProductCatalog ProductSpecificationcontains1 1..*

Page 11: March 31, 200391.3913 R McFadyen1 Persistent Objects Persistent objects are objects that continue to exist after the application program terminates Persistence

March 31, 2003 91.3913 R McFadyen 11

Representing Relationships in Tables

Representing Object Associations as Tables pattern

many-to-many

create an associative table that records the OIDs of each object in relationship

Company Personemploys**

Page 12: March 31, 200391.3913 R McFadyen1 Persistent Objects Persistent objects are objects that continue to exist after the application program terminates Persistence

March 31, 2003 91.3913 R McFadyen 12

Representing Relationships in Tables

Representing Object Associations as Tables pattern

many-to-many AND with an Association Class

create an associative table that records the OIDs of each object in relationship and attributes of the association class

Company Personemploys**

Employment

Page 13: March 31, 200391.3913 R McFadyen1 Persistent Objects Persistent objects are objects that continue to exist after the application program terminates Persistence

March 31, 2003 91.3913 R McFadyen 13

Representing Relationships in Tables

Representing Object Associations as Tables pattern

many-to-many AND with an Association Class

create an associative table that records the OIDs of each object in relationship ...

Person marries

*

*Marriage

Page 14: March 31, 200391.3913 R McFadyen1 Persistent Objects Persistent objects are objects that continue to exist after the application program terminates Persistence

March 31, 2003 91.3913 R McFadyen 14

Representing Relationships in Tables

Representing Object Associations as Tables pattern

Aggregation and Composition

Sale SalesLineItemcontains1..*

Programme Coursecontains1..**

Treat as 1-to-many and many-to-many associations

(Aside: Note that relational integrity rules/triggers may need to be defined.)

Page 15: March 31, 200391.3913 R McFadyen1 Persistent Objects Persistent objects are objects that continue to exist after the application program terminates Persistence

March 31, 2003 91.3913 R McFadyen 15

Representing Relationships in Tables

Representing Object Associations as Tables pattern

Superclass/Subclass

Payment

CreditPaymentCashPayment ChequePayment

3 basic choices: •all classes represented as separate tables, •only the ‘leaf’ classes, or •one table for all

Others are possible (see 3902)

Page 16: March 31, 200391.3913 R McFadyen1 Persistent Objects Persistent objects are objects that continue to exist after the application program terminates Persistence

March 31, 2003 91.3913 R McFadyen 16

OR Mapping - Example

When we map this structure to a Relational Database, we are creating an object-to-relational mapping. We need to define the relational database schema and specify which class(es) map to which relation(s), and whether the associations are mapped to relations or to foreign keys.

Suppose we have the following class model:

Program

name

type

description

Course

name

credit

description

**Offering

slot

roomcontains

*offer

Page 17: March 31, 200391.3913 R McFadyen1 Persistent Objects Persistent objects are objects that continue to exist after the application program terminates Persistence

March 31, 2003 91.3913 R McFadyen 17

Example - recall patterns for O-R mappings

O-R Mapping•The Representing Objects as Tables pattern says that each class will be represented in the RDb by a separate table (relation).

•The Object Identifier pattern tells us that each table representing a class will have the OID as the PK.

•The Representing Object Associations as Tables pattern gives us several options:

•use an association table to represent the association

•(for 1-1 and 1-m) we can choose to use a Foreign Key

•for a 1-1 we can choose to merge the two classes into one table

•etc

Page 18: March 31, 200391.3913 R McFadyen1 Persistent Objects Persistent objects are objects that continue to exist after the application program terminates Persistence

March 31, 2003 91.3913 R McFadyen 18

Example - mapping

Class Maps to Relation

Program

Course

Association Maps to Relation/FKey

contains Table: Contains

offer FK in Offering (refers to Course)

Offering Offering

O-R Mapping, for the given class model we could decide:

Course

Program

Page 19: March 31, 200391.3913 R McFadyen1 Persistent Objects Persistent objects are objects that continue to exist after the application program terminates Persistence

March 31, 2003 91.3913 R McFadyen 19

Example - mapping

Relational Schema

Program

Course

Offering

name type description

slot room

name credit description

Contains

pOID

oOID

cOID

pOID

cOID

Illustrates the structure of the relations

•PKs are underlined.

•FKs are indicated via dashed lines.

cOID

Page 20: March 31, 200391.3913 R McFadyen1 Persistent Objects Persistent objects are objects that continue to exist after the application program terminates Persistence

March 31, 2003 91.3913 R McFadyen 20

Example - mapping

Table structure with some sample records

Program

Course

name type description

C Programming 3 This course introduces …

pOID

256

3-year R123

4-year R ...334

Java Programming 3 ...333

Systems Analysis 3 ...456

name credit descriptioncOID

A 3-year programme of studies in Business Computing

Page 21: March 31, 200391.3913 R McFadyen1 Persistent Objects Persistent objects are objects that continue to exist after the application program terminates Persistence

March 31, 2003 91.3913 R McFadyen 21

Example - application models

Note that these relational structures are very different from the class structures that application programs would use. For example, a course object will contain, within it, its offerings: public class Course

{

 private Hashtable Offerings = new Hashtable();

course_offering = new Offering (…)

Offerings.put (…, course_offering);

}

Part of the complexity of a system that uses objects and tuples/rows in an RDb is the translation from/to the other.

A collection of course offerings

Adding a course offering to the collection

Page 22: March 31, 200391.3913 R McFadyen1 Persistent Objects Persistent objects are objects that continue to exist after the application program terminates Persistence

March 31, 2003 91.3913 R McFadyen 22

Object to Relational Mapping Products

EJB-related products providing object to relational mapping services

• CoCoBase

• TopLink• enJin

Page 23: March 31, 200391.3913 R McFadyen1 Persistent Objects Persistent objects are objects that continue to exist after the application program terminates Persistence

March 31, 2003 91.3913 R McFadyen 23

enJin: the following is from:

http://www.versant.com/products/enjin/whitepapers/WP_Benchmark-011022r4-W.pdf

“… This object-to-relational bottleneck is often referred to as an 'impedance mismatch', since in order to store data in an RDBMS, objects must be broken down into flat table structures, and to retrieve objects, they must be built up from these RDBMS 'flat' structures. This white paper examines the performance characteristics of a product that has been designed specifically to overcome this object-to-relational impedance mismatch, and which successfully improves both the response times and transaction throughput of applications deployed on J2EE application servers such as IBM's WebSphere.

Object to Relational Mapping Products

Page 24: March 31, 200391.3913 R McFadyen1 Persistent Objects Persistent objects are objects that continue to exist after the application program terminates Persistence

March 31, 2003 91.3913 R McFadyen 24

TopLink

a commercial product that provides object to relational mapping capability

“In an enterprise Java environment, one of the most formidable challenges is storing business objects and components in a relational database (RDB). Oracle TopLink provides developers with the flexibility to map objects and Enterprise Java Beans to a relational database schema with minimal impact on ideal application design or database integrity. The result — developers focused on addressing business needs rather than building infrastructure.

Object to Relational Mapping Products