apache cayenne

22
APACHE CAYENNE Java database persistence framework

Upload: tess

Post on 23-Feb-2016

63 views

Category:

Documents


0 download

DESCRIPTION

Java database persistence framework. Apache Cayenne. SELECT by FROM postnr AS p WHERE ( SELECT DISTINCT postnr FROM addr AS a WHERE user.adrId = a.Id ) = p.postnr; user.getProperty(”adr.postnr.by”);. Bakgrunn. Vanskelig å lage sikker jdbc-kode Vanskelig å oppnå persistence - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Apache Cayenne

APACHE CAYENNEJava database persistence framework

Page 2: Apache Cayenne

SELECT by FROM postnr AS pWHERE ( SELECT DISTINCT postnrFROM addr AS a WHERE user.adrId = a.Id ) = p.postnr;

user.getProperty(”adr.postnr.by”);

Page 3: Apache Cayenne

Bakgrunn Vanskelig å lage sikker jdbc-kode Vanskelig å oppnå persistence Vanskelig å kunne alt

Page 4: Apache Cayenne

Hva går det ut på?- Forenkle bruk av databaser i Java- Persistence- Caching

Page 5: Apache Cayenne

Hvordan virker det?

Page 6: Apache Cayenne

Eksempel på bruk

Student(id, navn)Lærer(id, navn)Kurs(id, tittel, lærer_id*)Kursliste(kurs_id*, student_id*)

Vi skal lage og bruke databasen som modellen og det logiske skjemaet viser; relasjonene er navngitte da dette vil bli viktig senere.

Page 7: Apache Cayenne

Opprett et nytt prosjekt i din IDE (for eksempel Eclipse eller Netbeans).

Prosjektets build path må utvides med Cayennes bibliotek.

Vi bruker Derby som db, denne må også inn da den kjøres i embedded mode.

Bruk: environment

Page 8: Apache Cayenne

Bruk: CayenneModellerI stedet for å skrive XML kan man bruke dette programmet som følger med til å ”mappe” objekter <> tabeller.

Vi setter først opp enforbindelse til databasen.

D:/testdb henviser her til hvor databasen fysisk skal ligge/ligger. Selvsagt valgfritt!

Page 9: Apache Cayenne

Bruk: CayenneModellerEt DataDomain er en virtuell datakilde, som kan bestå av data fra en eller flere ”fysiske” kilder.

En kilde kalles en DataNode, og er en database. Vi bruker den vi nettopp har satt opp for Derby.

Page 10: Apache Cayenne

Bruk: CayenneModellerEt DataMap brukes til å mappe Java-objekter mot databasetabeller. Et DataMap for hver DataNode.

Prosjektet lagres under /src-katalogen til prosjektet du har opprettet. Det dukker da opp flere XML-filer.

Page 11: Apache Cayenne

Bruk: dbEntity Tilsvarer det som blir en tabell i en database.

Attributer angis slik man er vant med, med navn, type og andre alternativ, som PK (Primary Key).

Page 12: Apache Cayenne

… og så har me juksa litt…

Page 13: Apache Cayenne

Bruk: Relationships Brukes til å lage fremmednøkler, dvs. koble sammen tabeller.

Et aber er at attributter som skal være fremmednøkler må legges inn som vanlige attributter før relasjonen skapes.

Page 14: Apache Cayenne

Bruk: objEntity Tilsvarer en Java-klasse, og genereres med tilsvarende datafelt. Det er en objEntity for hver dbEntity.

Logisk, eller hva?

Page 15: Apache Cayenne

Bruk: generer tabellerTools > Generate database schema

Page 16: Apache Cayenne

Bruk: generer JavaSett først en default package for klassene dine, og klikk ’update’. Dette oppdaterer alle objEntities i dette DataMap’et.

Velg så Tools > Generate Classes og skriv inn et pakkenavn for superklassene hvis du vil at disse skal ligge adskilt.

Page 17: Apache Cayenne

Bruk: Eclipse

De genererte java-klassene (db) og superklasser (db.auto). Legg merke til at superklassene arver fra CayenneDataObject.

Page 18: Apache Cayenne

Pros: CayenneModeller Mye enklere enn å skrive XML selv

Lettforståelig abstraksjon

Page 19: Apache Cayenne

Cons: CayenneModeller Må selv legge inn fremmednøkler, noe

som burde ha blitt gjort automatisk gjennom relationship-editoren.

Ikke det mest brukervennlige programmet. Feilmeldingene er for eksempel ikke spesielt nyttige.

Page 20: Apache Cayenne

Demo

Page 21: Apache Cayenne

Oppsummering, alternativer SQL gjennom jdbc-connector

RoteteTett koplingMye jobb

HibernateMange muligheterVanskelig å bruke

ANBEFALES!

Page 22: Apache Cayenne

Spørsmål?

Gruppe 3:Thomas ArpIngleiv JohansenVidar FjellestadJohnny Horvi