Samling av trådene. Persistens. Dagens forelesning. Normal hendelsesflyt for Meld på kurs. Erik Arisholm. o Kort repetisjon. o Design av persistens



Like dokumenter
Persistens. Erik Arisholm. Institutt for informatikk Erik Arisholm INF1050-persistens-1

Kursregistrering bruksmønstermodell

Arne Maus, Ifi. delvis lån av gamle foiler

Satsvise, interaktive, sanntids/innbakte systemer. Arne Maus, Ifi. Oppdeling av både program og data på flere maskiner

OO Design, del 2. Oversikt over forelesningene. Metode for ansvarsdrevet OO Hva er et objekt. Uke 12: Fra sekvensdiagram til klasser

Metode for ansvarsdrevet OO. Dagens forelesning. Delegering av ansvar i en trelagsarkitektur

Beskjed fra Skagestein

Ansvarsdrevet OO: CRC og UML Sekvensdiagrammer

Oversikt over forelesningene. Fra analyse til objektdesign. Utfordringen i å lage OO-modeller. Metode for ansvarsdrevet OO. Uke 12: Ansvarsdrevet OO:

NB! Endring i undervisningsplanen

Spesifikasjon av Lag emne

Fra krav til objektdesign

Metode for ansvarsdrevet OO. Dagens forelesning. Delegering av ansvar i en trelagsarkitektur

Spesifikasjon av Lag emne. Kursregistrering bruksmønstermodell (ny versjon) Dagens forelesning. Fra krav til objektdesign

Dagens forelesning. o Litt mer om design med UML sekvensdiagrammer. Sentralisert og delegert kontrollstil

Metode for ansvarsdrevet OO med UML. Dagens forelesning. Hovedflyt for Meld på kurs. Delegering av ansvar i en trelagsarkitektur

Metode for ansvarsdrevet OO. Dagens forelesning. Delegering av ansvar i en trelagsarkitektur

Dagens forelesning. o Litt mer om design med UML sekvensdiagrammer. Sentralisert og delegert kontrollstil

UML klassediagrammer

Metode for ansvarsdrevet OO med UML. Dagens forelesning. Hovedflyt for Meld på kurs. Delegering g av ansvar i en trelagsarkitektur

Utvikling fra kjernen og ut

o UML klassediagrammer

Spesifikasjon av Lag emne. Kursregistrering bruksmønstermodell. Dagens forelesning. Fra krav til objekter

Spesifikasjon av Lag emne. Kursregistrering g bruksmønstermodell. Dagens forelesning. Fra krav til objekter

Utvikling fra kjernen og ut

1. SQL datadefinisjon og manipulering

Instituttets krav om autentisitet og regler for obligatoriske oppgaver gjelder.

SQL Structured Query Language. Definere tabeller Skranker Fylle tabeller med data

Utvikling fra kjernen og ut

Instituttets krav om autentisitet og regler for obligatoriske oppgaver gjelder.

Oppgaver Oppgave a: Sett opp mulige relasjoner

Utvikling fra kjernen og ut

AP221 Use Case SBL Benytt meldingstjeneste

Datamodellering 101 En tenkt høgskoledatabase

1. Innføring i bruk av MySQL Query Browser

Databaser: Relasjonsmodellen, del I

Krav til pilot Magasinmodul. MUSIT Ny IT-arkitektur, planleggingsfasen

Introduksjon til fagfeltet

Datamodellering og databaser SQL, del 2

Applikasjonsutvikling med databaser

En lett innføring i foreninger (JOINs) i SQL

Databasesystemer, oversikt

Oppgave 1 (Opprett en database og en tabell)

Repetisjon: Normalformer og SQL

INF1300 Introduksjon til databaser

UML- Use case drevet analyse og design. Domenemodeller Sekvensdiagrammer Use case realisering med GRASP patterns Klassediagram - designmodeller

Brukermanual. Oppgavebasert versjon, for montører. Gjennomgår de vanligste gjøremålene for en montør!

UML-Unified Modeling Language

Sikkerhets- og samhandlingsarkitektur ved intern samhandling

UNIVERSITETET l OSLO Det matematisk-naturvitenskapelige fakultet

UML 1. Use case drevet analyse og design Kirsten Ribu

Databaser kort intro. Tom Heine Nätt

UML-Unified Modeling Language. Prosess-oversikt. Use case realisering

EKSAMEN 6102 / 6102N DATABASER

Skolekorpset. Løsningsforslag til oppgave gitt i forelesning om normalisering LC238D Datamodellering og databaser: Normalisering

Databaser. Relasjonsmodellen 1 Læreboka: Kap. 2 Relasjonsmodellen Faglærere: Tore Mallaug, Kjell Toft Hansen

Oppsummering INF1050. Hovedtemaene i INF1050. Utviklingsverktøy og plattformer. Produksjon av informasjonssystemer

Tilkobling og Triggere

I dag UML. Domenemodell visualisering av konsepter. Eksempel. Hvordan finne domeneklasser?

INF 329: Web-Teknologier. Dataimplementasjon. Fra Kapittel 11 i «Designing Data-Intensive Web Applications» Presentasjonsdato: 17/10/2004

Datamodellering og databaser SQL, del 2

Datamodellering og databaser SQL, del 2

INTEGRASJON MOT KOMTEK RENOVASJON FOR EKSTERNE SYSTEMER - OVERORDNET

Integritetsregler i SQL. Primærnøkler

Sikkerhet og tilgangskontroll i RDBMS-er

Transaksjoner og flerbrukerproblematikk. Transaksjoner

INF 1050 BRUK AV MODELLERINGSVERKTØYET RATIONAL ROSE

Integritetsregler i SQL

Universitetet i Oslo Institutt for statsvitenskap

OM DATABASER DATABASESYSTEMER

ITGK - H2010, Matlab. Dagens tema : Teori - Databaser

1. Datamodellering Kommentarer til læreboka

Transaksjoner og flerbrukerproblematikk. Transaksjoner

1 GENERELL INFORMASJON 3 2 MODULER 5 3 HOVEDMENY 6 4 WORK WITH DOCUMENT LOG 7 5 UPDATE PARTNER INFORMATION 9 6 UPDATE COMPANY PARAMETERS 18

Personvernsreglene. Bruk og beskyttelse av personopplysninger. Vår Policy om Personvern

UNIVERSITETET I OSLO

Erfaringer fra v2010 Oppsummering: Hvordan utvikles et informasjonssystem? Noen eksamenstips, og litt teknikk Hvordan er eksamensoppgaven?

Utvikling med Genova. Agenda. Hvem er vi? Kursets struktur og forelesere. Modelldrevet utvikling av brukergrensesnitt og tjenester med Genova

Utvikling med Genova. Modelldrevet utvikling av brukergrensesnitt og tjenester med Genova

Produktrapport Gruppe 9

HVA ER XML? extensible Markup Language En standardisert måte å strukturere ulike typer data Åpent format Enkelt:

Å bruke Java API-et til å sortere tabeller/arraylister der elementene er (referanser til) objekter

EKSAMEN DATABASER

t Institutt for informatikk Erik Arisholm 13. mai 2009 INF1050-oppsummering-1

INF Industriell systemutvikling (Utvikling av store programsystemer) Software engineering

INF1300 SQL Structured Query Language del 1. Stoff som blir/ble forelest i oktober 2013

Use case drevet design med UML

IN2090 Databaser og datamodellering 07 Datamanipulering

HØGSKOLEN I SØR-TRØNDELAG

UNIVERSITETET I OSLO SQL. Structured Query Language. (forts.) Institutt for Informatikk. INF Ragnar Normann 1

INF1000: Forelesning 7. Konstruktører Static

INF1000: Forelesning 7

Etter uke 9 skal du. Introduksjon til objektorientert programmering. Innhold. Klasser som abstraksjoner

Datamodellering med UML. Modellenes to formål. The Unified Modeling Language - UML

Software Faults and Failure Testing Issues 8.1 / 8.2

Løsningsforslag eksamen 4MX230UM2-K 5.desember 2013

Denne rapporten er beregnet for dataansvarlig på Grefsenhjemmet, den som skal installere, vedlikeholde og modifisere systemet.

Erfaringer fra våren Oppsummering: Hvordan utvikles et informasjonssystem? Noen eksamenstips, og litt teknikk Hvordan er eksamensoppgaven?

1. Relasjonsmodellen Kommentarer til læreboka

Transkript:

Samling av trådene Systemutvikling sm helhet Persistens Erik Arishlm 1. Systemutvikling: mtivasjn... J Hannay, Simula & Ifi 2. Systemutviklingsprsessen... Rune Steinberg, Visma Sftware AS 3. Prsjektledelse g prsjektarbeid... Rune Steinberg, Visma Sftware AS Kunde/leverandør/bruker-frhldx 4. Kravhåndtering. Erik Arishlm, Simula & Ifi 5. Avtaler & kntrakter... Jørgen Petersen, Prmis AS 6. Estimering...... Stein Grimstad, Simula 7. Jus & etikk...... Dag W. Schartum, Senter fr Rettsinfrmatikk Systemets struktur g design 8. Mdellering av krav med use cases Erik Arishlm, Simula & Ifi 9. Objektrientert analyse (2 frel.)... Erik Arishlm, Simula & Ifi 10. Persistens g databaser Erik Arishlm, Simula & Ifi 11. Arkitektur.... Dag Lrås, Visma Sftware AS Kding, validering g vedlikehld 12. Mdellbasert utvikling med Genva Esit AS 13. Validering g verifisering (2 frel.)... Linel Briand, Simula & Ifi 14. Knfigurasjnsstyring.. Hans Christian Benestad, Simula INF1050-persistens-1 INF1050-persistens-2 Krt repetisjn Dagens frelesning Objektrientert mdellering (blig 2) Ntasjn: UML klassediagram g bjektdiagram Metde: Fra sekvensdiagram til klassediagram Design av persistens Relasjnsdatabaser (tabelldatabaser) Datamdellering med UML Object-Relatinal (O-R) Mapping Structured Query Language (SQL) Eksempel: Hibernate Objektrienterte databaser Eksempel: ObjectStre Nrmal hendelsesflyt fr Meld på kurs kantbjektet: Kant k:=meldpaa(studentid, emnekde, semester) <<create>> meldpaa: MeldPaa universitetet: Ui Universitet itt k:=meldpaa(studentid, emnekde, semester) studenten:=finn(studentid) emnet:=finn(emnekde) frutsetter:=frutsetterr() kurset:=finn(semester) erledigplass:=ledigplass() paameldingok:=meldpaa(studenten) ermeldtpaa(kurset) emnet: kurset: studenten: INF1050-persistens-3 INF1050-persistens-4

Klasser invlvert i hvedflyt Metder g attributter fr hvedflyt Kant MeldPaa Universitet Kant + meldpaa:blean MeldPaa + meldpaa:blean - emnekde: String - antallrfrutsettes; int +finn: + frutsetterr: blean Universitet + finn: + finn: - antallplasser: int - antallpaameldt: int - semester: String + ledigplass: blean + meldpaa: blean - studentid: String + ermeldtpaa: vid 1) Inkluder klassene du finner i sekvensdiagrammet 2) Inkluder metdene sm ble brukt i sekvensdiagrammet 3) Inkluder attributter sm metdene trenger INF1050-persistens-5 INF1050-persistens-6 Kmplett klassediagram fr hvedflyt Metde fr ansvarsdrevet OO med UML Inf1050 metden (Iterativ): Analyse av krav Kant + meldpaa:blean MeldPaa + meldpaa:blean - emnekde: String - antallrfrutsettes: int +finn: + frutsetterr: blean 1 0..* 1 Universitet + finn: + finn: 1 (1) Identifiser aktører g deres mål (2) Lag et høynivå bruksmønsterdiagram (3) Spesifiser hvert bruksmønster tekstlig med hvedflyt g alternativ flyt Objektdesign 0..* - antallplasser: int - antallpaameldt: int - semester: String + ldi ledigplass: l blean + meldpaa: blean 0..* 0..* 0..* kursdeltaker - studentid: String + ermeldtpaa: vid Fr hvert bruksmønster: (4) Identifiser bjekter g frdel ansvar mellm dem (CRC) (5) Lag sekvensdiagram fr hvedflyt g viktige variasjner (6) Lag klassediagram sm tilsvarer sekvensdiagrammene (7) Lag til slutt klassediagram på systemnivå 4) Inkluder asssiasjner sm metdene trenger (bruker eller ppretter) 5) Inkluder avhengighetspiler mellm klassene sm utveksler meldinger INF1050-persistens-7 Detaljert design (persistens, arkitektur, brukergrensesnitt, spesifisere tester) INF1050-persistens-8

Persistens Eksempel trelagsarkitektur Frretningsbjektene i vår applikasjn må lagres på en eller annen måte Utenfr applikasjnens minne, på et permanent lagringsmedium Til dette frmålet bruker vi en database Nettleser eller annen klientapplikasjn Applikasjn (kant-, kntrll- g frretningsbjekter) Databasehåndteringssystem (DBMS) Database (frretningsbjekter) typisk er databasen implementert i et dedikert databasehåndteringssystem (Data Base Management System - DBMS) bruker Men fr svært enkle systemer hlder det nen ganger med hjemmesnekrede løsninger, sm fr eksempel at hvert bjekt lagres g hentes direkte sm filer av vår applikasjn (dvs, vi bruker perativsystemets filhåndteringssystem) Frretningsbjektene i vår applikasjn lagres i databasen, g hentes derfra når applikasjnen trenger dem I eksempelet vårt:,, Universitet, Klienter (Internet Explrer, Firefx, Opera, Safari, ) Web/Applikasjnstjenere (JBss, WebSphere, WebLgic, GlassFish, Fusin, Tmcat...) Databasetjenere (Oracle, MySQL, Infrmix, PstgreSQL, SQL Server, ObjectStre, Pet,...) INF1050-persistens-9 INF1050-persistens-10 Hva er et databasehånderingssystem? T hvedtyper av databaser Tilbyr grensesnitt fr applikasjner API fr prgrammerere (fr eksempel JDBC mt relasjnsdatabaser) (har fte gså egne brukergrensesnitt fr å gjøre direkte spørringer mt databasen) Utfører (g ptimaliserer) spørringer g ppdateringer brukerdata metadata (data m brukerdata) Håndhever skranker/integritetsregler Eks 1: må være asssiert med nøyaktig ett emne. Eks 2: Et emne kan ikke slettes hvis det hldes kurs i emnet (dvs, kursene må slettes først) Håndterer flere brukere samtidig (gjelder ikke enbruker-dbms) Gjennmfører ppdateringer av data sm transaksjner Utøver tilgangskntrll Sikrer data Relasjnsdatabaser (tabelldatabaser) Data lagres sm tabeller (relasjner) med frekmster Hvis vi skal bruke en relasjnsdatabase sm lagringsmedie må frretningsbjekter g asssiasjner mellm disse versettes (mappes) til/fra relasjner (Object-Relatinal Mapping O/RM) Objektrienterte databaser Lagrer g henter bjekter sm brukes i en applikasjn uten at du trenger å bry deg m hvrdan (strt sett) Frstår bjektrienterte knstruksjner (asssiasjner sm fr eksempel er implementert sm en HashMap, arv, sv) Det finnes gså hybridløsninger (bject-relatinal) INF1050-persistens-11 INF1050-persistens-12

Relasjner g relasjnsdatabaser Relasjn (litt frenklet) Et matematisk begrep sm kan tlkes sm en tabell med verdier der alle linjer i tabellen er frskjellige fra hverandre: Relasjnen har et entydig navn Relasjnen består av en rekke attributter Attributter har et entydig navn innen relasjnen Attributtenes rekkefølge skal være uten betydning Attributtene er atmiske (ikke sammensatte strukturer) Relasjnsdatabase En samling relasjner E. F. Cdd: A Relatinal Mdel fr Large Shared Data Banks, Cmmunicatins f the ACM, Vl 13, Number 6 (June 1970) Relasjnsdatabasen En relasjnsdatabase består av tabeller (relasjner). Hver linje representerer en gitt entitet (frekmst), g har en unik identitet definert ved en primærnøkkel (primary key). Hver celle i tabellen innehlder verdien til et av attributtene til entiteten Tabellene asssieres med hverandre via fremmednøkler (freign keys) INF1050-persistens-13 INF1050-persistens-14 Eksempel på tabeller Primærnøkler g fremmednøkler Ansatt ansattid {pk} navn pid {fk}{null} 1 Per 2 Kari 2 3 Ola 4 Parkeringsplass pid {pk} beliggenhet 1 P4 2 P3 3 P3 4 P1 Hver tabell må ha en primærnøkkel (primary key), sm unikt identifiserer hver enkelt frekmst i tabellen Er vanligvis ett attributt, men kan gså være sammensatt av flere enn ett attributt (sm til sammen blir en primærnøkkel) En tabell kan ha null, en eller flere fremmednøkler (freign keys). En verdi i en fremmednøkkel har en tilsvarende verdi i en primærnøkkel i en annen tabell. Dvs, en fremmednøkkel relaterer en gitt frekmst med frekmster i andre tabeller. UML asssiasjner realiseres sm fremmednøkler i en relasjnsdatabase INF1050-persistens-15 INF1050-persistens-16

Object-relatinal mapping: fra bjekter til relasjner Fr hver bjektrienterte frretningsklasse (entity bjects) lag en tilsvarende relasjn (tabell) sm innehlder attributtene fra klassen samt en ny primærnøkkel dersm en passende identifikatr ikke allerede er definert i klassen Fr en-til-en asssiasjner Inkluder en fremmednøkkel i en av klassene (valgfritt hvilken) sm tilsvarer den andre klassens primærnøkkel Fr en-til-mange asssiasjner Inkluder en fremmednøkkel i klassen på mange-siden av asssiasjnen sm tilsvarer en-sidens primærnøkkel Fr mange-til-mange asssiasjner Opphøyes til å bli en egen relasjn (tabell): Lag en ny tabell sm innehlder t fremmednøkler, en fr hver primærnøkkel lid de t klassene i asssiasjnen UML klassediagrammer kan brukes til å definere en datamdell En datamdell (relasjnsmdell) innehlder ikke metder, men innehlder primærnøkler g evt. fremmednøkler (sm realiserer asssiasjner) Nøkkelrdet {fk} definerer at attributtet er en fremmednøkkel Nøkkelrdet {pk} definerer at et attributt er en (del av en) )primærnøkkel Nøkkelrdet {null} definerer at et attributt kan være tmt, ellers antas {nt null} INF1050-persistens-17 INF1050-persistens-18 En-til-en asssiasjn Objekter g tilsvarende frekmster 1 : Parkeringsplass Ansatt - ansattid -navn Objektrientert mdell Relasjnsmdell 0..1 er tildelt 0..1 Parkeringsplass -pid - beliggenhet ansattid = 1 navn ='Per' ansattid = 2 navn = 'Kari' ansattid = 3 navn = 'Ola' 1 : Ansatt 2 : Ansatt 3:Ansatt pid = 1 beliggenhet = 'P4' 2:Parkeringsplass pid = 2 beliggenhet = 'P3' pid = 3 3 : Parkeringsplass beliggenhet = 'P3' pid = 4 4 : Parkeringsplass beliggenhet = 'P1' Ansatt ansattid {pk} navn pid {fk}{null} 0..1 er tildelt 0..1 Parkeringsplass pid {pk} beliggenhet NB! Objektidentifikatrene tifik t er her satt til samme verdier sm primærnøklene fr å tydeliggjøre sammenhengen. Ansatt Parkeringsplass ansattid {pk} navn pid {fk}{null} pid {pk} beliggenhet 1 Per 1 P4 2 Kari 2 2 P3 3 Ola 4 3 P3 4 P1 INF1050-persistens-19 INF1050-persistens-20

En-til-mange asssiasjn - emnekde: String - antallrfrutsettes: int + finn: + frutsetterr: blean Objektrientert mdell Relasjnsmdell emnekde {pk} antallrfrutsettes 1 1 undervises i undervises i - antallplasser: int - antallpaameldt: int 0..* - semester: String + ledigplass: blean + meldpaa: blean kursid {pk} 0..* antallplasser antallpaameldt semester emnekde {fk} Multiplisitetene li it t i klassediagrammet frteller ss at vi kan ha emner uten kurs, men ikke kurs uten emne Nye attributter emnekde {pk} Objekter g tilsvarende frekmster Inf1000 : emnekde = 'Inf1000' antallrfrutsettes = 0 Inf1050 : emnekde = 'Inf1050' antallrfrutsettes = 0 Inf9001 : emnekde = 'Inf9001' antallrfrutsettes = 40 antallr Frutsettes Inf1000 0 Inf1050 0 Inf9001 40 1 : antallplasser = 400 antallpaameldt = 311 semester = 'h07' 2 : antallplasser = 300 antallpaameldt = 278 semester = 'v07' 3 : antallplasser = 300 antallpaameldt = 299 semester = 'v08' kursid {pk} antallplasser antallpaameldt semester emnekde {fk} 1 400 311 h07 Inf1000 2 300 278 v07 Inf1050 3 300 299 v08 Inf1050 INF1050-persistens-21 INF1050-persistens-22 0..* - antallplasser: int - antallpaameldt: int - semester: String +ledigplass: blean +meldpaa: blean Objektrientert mdell Relasjnsmdell Mange-til-mange asssiasjner er meldt på 0..* - studentid: String + ermeldtpaa:vid Objekter g tilsvarende frekmster 1 : antallpaameldt = 2 antallplasser = 400 semester = 'h07' 2 : antallpaameldt = 1 antallplasser = 300 semester = 'v07' 3 : antallpaameldt = 2 antallplasser = 300 semester = 'v08' 10001 : studentid = 10001 10002 : studentid = 10002 15500 : studentid = 15500 30400 : studentid = 30400 kursid {pk} antallplasser antallpaameldt semester 1 1 Paamelding studentid td tid{ {pk} 0..* kursid {pk}{fk1} 0..* studentid {pk}{fk2} Asssiasjnen pphøyes til en egen entitet i en datamdell kursid {pk} antallplasser antallpaameldt semester 1 400 2 h07 2 300 1 v07 3 300 2 v08 Paamelding kursid{pk}{fk1} } studentid {pk}{fk} 1 10001 1 10002 2 30400 3 10002 3 30400 studentid {pk} 10001 10002 15500 30400 INF1050-persistens-23 INF1050-persistens-24

Structured Query Language (SQL) SQL er et standard prgrammeringsspråk fr å håndtere tabelldatabaser. Eksempel på SELECT SELECT <attributene sm skal være med> Fr frekmstmanipulering (DML Data Manipulatin Language ): SELECT INSERT UPDATE DELETE Fr skjemamanipulering (DDL Data Definitin Language ) CREATE ALTER DROP Fr transaksjns- g tilgangskntrll (DCL Data Cntrl Language ) COMMIT ROLLBACK GRANT REVOKE kursid, semester, antallplasser FROM <tabellen(e) sm innehlder dataene> WHERE <utvalgskriterier> emnekde = Inf1050 AND semester = v08 INF1050-persistens-25 INF1050-persistens-26 Eksempel på INSERT Eksempel på UPDATE INSERT INTO Alt 1) UPDATE SET antallpaameldt = 1 (kursid, emnekde, semester, antallplasser, antallpaameldt) VALUES (4, Inf1050, v09, 300, 0) WHERE kursid = 4 - Antall påmeldte til kurset settes lik 1 Alt 2) UPDATE SET antallpaameldt = antallpaameldt + 1 WHERE emnekde = inf1050 AND semester = v09 - Antall påmeldte til kurset økes med 1 INF1050-persistens-27 INF1050-persistens-28

Eksempel på DELETE DELETE FROM WHERE kursid = 4 eller DELETE FROM WHERE emnekde = inf1050 AND semester = v09 -Fjerner kurset fr Inf1050 v09. DELETE FROM WHERE emnekde = Inf1050 - Fjerner alle kurs fr Inf1050! Transaksjner En transaksjn grupperer SQL-kmmander inn i et udelelig stykke arbeid slik at enten alle eller ingen av endringene blir permanente. ROLLBACK: Reverserer alle SQL-kmmander sm er utført så langt, slik at databasen ser ut sm ved frrige COMMIT Kalles typisk når feilsituasjner ppstår i løpet av en transaksjn COMMIT: Endringene sm et resultat av SQLkmmandene siden frrige COMMIT blir gjrt permanente. INF1050-persistens-29 INF1050-persistens-30 Arkitektur med Hibernate fr persistens vha relasjnsdatabaser O-R mapping med Hibernate Støtter versetting (mapping) fra bjektrienterte klassemdeller til relasjnsdatabaser. Du kan selv skrive XML mapping-filer eller bruke autmatiske verktøy (fr eks. XDclet). bruker Nettleser eller annen klientapplikasjn Kant- g kntrllbjekter Applikasjn ekter frretningsbje XML map Hibernate (mediatr g resurcebjekter) cnfig Databasehåndteringssystem (DBMS) Database (frretningsbjekter) Har endel regler fr hvrdan asssiasjner bør mappes slik at navigering ver asssiasjnene blir effektive Kan generere relasjnsdatabaseskjemaet j fra XML mapping-filene (XML = Extensible Markup Language, brukes til å beskrive data g data m data, dvs metadata) Transparent å pprette, finne, ppdatere g slette bjekter i databasen Hibernate bruker en XML mapping-fil sammen med reflectin fr å finne ut hvrdan dette skal gjøres Støtter transaksjner, lazy lad g dirty checking (se RASD, kap 8.4) Persistens ved transitivitet (via asssiasjner) Støtter standard Java Cllectins: Hibernate vet m du endrer ne i et av bjektene i en Cllectin g vil autmatisk gjøre SQL Update eller SQL Insert Kan bruke både SQL g bjektrientert Hibernate Query Language (HQL) Klienter Web/Applikasjnstjener(e) Men det ALLER meste av SQL genereres autmatisk Fr detaljer, se http://www.hibernate.rghibernate databasetjenere INF1050-persistens-31 INF1050-persistens-32

0..1 XML-mapping fr Message nextmessage Message id: Lng text: String settext(txt: t(t t String) 0..* setnextmessage(nextmsg: Message) 0..1 MESSAGES MESSAGE_ID {pk} MESSAGE_TEXT NEXT_MESSAGE_ID {fk}{null} 0..* <hibernate-mapping> <class name="hell.message" table="messages"> <id name="id" clumn="message_id"> <generatr class="increment"/> </id> <prperty name="text" clumn="message MESSAGE_TEXT TEXT"/> <many-t-ne name="nextmessage" cascade="all" clumn="next NEXT_MESSAGE_ID ID" freign-key="fk_next_message"/> </class> </hibernate-mapping> message1: Message id = 1 text = 'blah' Vårt scenari FØR Frretningsbjekter i applikasjnen Frekmster (i tabellen MESSAGES) MESSAGE_ID {pk} MESSAGE_TEXT 1 blah NEXT_MESSAGE_ID {fk}{null} ETTER MESSAGE_ID {pk} message1: Message id = 1 text = 'Greetings Earthling' message2: Message id = 2 text = 'Take me t yur leader' MESSAGE_TEXT NEXT_MESSAGE_ID {fk}{null} } 1 Greetings Earthling 2 2 Take me t yur leader INF1050-persistens-33 INF1050-persistens-34 Eksempel på persistens med Hibernate Hibernate vil da utføre følgende SQL-kmmander dit() : Kntrllklasse mysessin: Sessin mytransactin = begintransactin() <<create>> message1 = get(message.class, 1) settext( "Greetings Earthling" ) <<create>> settext( "Take me t yur leader" ) setnextmessage(message2 g ) cmmit() mytransactin: Transactin message1: Message message2: Message select MESSAGE_ID, MESSAGE_TEXT, NEXT_MESSAGE_ID frm MESSAGES where MESSAGE_ID = 1 insert int MESSAGES (MESSAGE_ID, MESSAGE_TEXT, NEXT_MESSAGE_ID) values (2, 'Take me t yur leader', null) update MESSAGES set MESSAGE_TEXT = 'Greetings Earthling', NEXT_MESSAGE_ID = 2 where MESSAGE_ID = 1 INF1050-persistens-35 INF1050-persistens-36

ObjectStre: eksempel på OO database ObjectStre er en bjektrientert database sm gir en helt sømløs (transparent) måte å lagre frretningsbjektene på. Objectstre vs Hibernate: ObjectStre: Ingen O-R mapping (eller SQL) er nødvendig, frdi bjektene lagres sm de er. ObjectStre knverterer klassene til ne de kaller persistence capable g persistence aware. Man må gså bruke egne cllectin klasser (fr eksempel: OSHashMap istedet fr standard HashMap) Fr å få tilgang til persistente bjekter bruker man et eller flere rtbjekter, g fra disse kan man få tilgang til de andre bjektene ved å følge pekere (asssiasjner). Registrering: Universitet ville vært et bra rtbjekt Brtsett fra det er en applikasjn sm bruker Objectstre ganske lik med en sm bruker Hibernate Tilsvarende funksjnalitet fr transaksjnshåndtering, støtter autmatisk lazy lad, dirty checking, transitiv persistens, sv. Hvrfr brukes bjektrienterte databaser så lite? Data blir applikasjnsspesifikke Data varer evig, mens applikasjner kmmer g går Ytelse? Prtabilitet Lettere å bytte relasjnsdatabase enn å bytte ut en bjektrientert database (?) Lite marked => større risik Supprt Relasjnsdatabaser har masse gratis prgramvare Hibernate gjør mtrent det samme! Og du har i tillegg muligheten til å bruke mer avanserte funksjner sm tilbys av relasjnsdatabaser INF1050-persistens-37 INF1050-persistens-38