Cursuswijzer Persistentie

advertisement
Cursuswijzer Persistentie
Faculteit Natuur & Techniek
Hogeschool Utrecht
Versie 0.2
APRIL 2014
Cursuswijzer Persistentie
2014
HU FNT
VERSIE BESCHRIJVING
Auteur
Datum
Jeroen Weber
23-03-2014
Beschrijving
Laatste
wijziging
23-03-2014
Versie
0.1
Conceptversie Cursuswijzer Persistentie
Gewijzigd door
Laatste wijziging
Versie
Beschrijving
Rory Sie
11-04-2014
0.2
aanpassing van Oracle naar MySQL Database server en bijbehorende programma’s en statements.
Rory Sie
14-04-2014
0.3
ii
INHOUDSOPGAVE
VERSIE BESCHRIJVING .............................................................................................................................II
INHOUDSOPGAVE .....................................................................................................................................1
1
CURSUSWIJZER ..................................................................................................................................2
1.1
1.2
ALGEMENE GEGEVENS ....................................................................................................................2
BEOORDELING ................................................................................................................................2
LESINHOUD PERSISTENTIE .....................................................................................................................3
2
OPDRACHTEN ....................................................................................................................................4
2.1
WEEKOPDRACHTEN MET BEOORDELINGSCRITERIA............................................................................4
1
1 CURSUSWIJZER
1.1 Algemene gegevens
Onderwijseenheid
Code
Naam docent
Studiefase
Aantal SP in ECTS
Werkvorm
Aanwezigheidsplicht
Hoofddoel
Leerdoelen
Competenties
Leermiddelen
Leeromgeving
Persistentie
Jeroen Weber, Rory Sie
Propedeuse, Semester 2, Blok 4
3 x 1,5 uur Instructie en practicum (uitwerken en presenteren opdrachten)
100% opdracht
Studenten maken software waarbij de gegevens persistent worden
opgeslagen in een database

Benoemen en gebruik kunnen maken van mogelijkheden voor het
vastleggen van gegevens

Het vastleggen van gegevens in databases vanuit OO-systemen,
gebaseerd op OO principes.

Het verwerken van gerelateerde gegevens in databases vanuit
verschillende OO-systemen.
Realisatie: software
Boek
Dictaat
Sheets & Wekelijkse opdrachten
Oreily_jentnut2_chapter_ch02.pdf
Web
Eclipse, Oracle, MySQL, JPA, JDBC, Hibernate
Tools
Leren door middel van uitleg van de theorie en verdieping door het zelfstandig
en in teamverband uitwerken van realistische opdrachten.
Sharepoint
1.2 Beoordeling
n.v.t.
Beoordelingsregeling Toetsmethode
Regeling herkansing
Te gebruiken hulpmiddelen
bij tentamen
Openbaarheid opdrachten
Tentamens die verplicht
gehaald moeten zijn
Beoordelingsinhoud Beoordelingscriteria
Wat wordt beoordeeld?
Wie beoordeelt?
docent
Wat is de
beoordelingsschaal?
Hoe wordt het
beoordelingsresultaat en de
beoordelingsverantwoording (feedback)
vastgelegd en hoe en aan
wie wordt dit meegedeeld?
2
LESINHOUD PERSISTENTIE
Rooster (lesweek)
Week Les
Titel/doel
1
Persistentie Client/server
JDBC basis
2
Databases
Persistentie JDBC Advanced
Databases
Persistentie ORM
JPA
Inhoud
 Toegang tot een database
ergens in het netwerk: wat
heb je nodig?
(client/server/connectie/serialisatie)
 Basisklassen JDBC
 Drivermanager
 Connections/Statements
 Resultsets







Programma onder voorbehoud van wijzigingen.
3
Opdracht
Opdracht 1:
Vastleggen gegevens
in een database, JDBC
Een op een relatie
object en tabel
Prepared statement
Relaties
Verbeteringen (datasource,
connection pooling,…)
Opdracht 2: Relaties
tussen objecten en
tabellen, prepared
statement
Databasemodel
OO model
Relatie
ORM/JPA/Hibernate
Opdracht 3:
Vastleggen gegevens
in een database, ORM,
Hibernate
3
2 OPDRACHTEN
2.1 Weekopdrachten met beoordelingscriteria
Opdracht week 1:
Opdracht
Het vastleggen van objecten in een Oracle database vanuit een java-programma
1. Installeer MySQL, MySQL Workbench en Notifier (Windows) / preference
pane (OS X)
2. Maak verbinding met de server
a. URL: localhost of 127.0.0.1
b. User: root
c. Password: <leeg>, tenzij anders opgegeven tijdens installatie
3. Maak verbinding met de database en maak een gebruiker aan met rechten
CREATE database datapersistentie;
USE datapersistentie;
CREATE USER sqluser IDENTIFIED BY 'sqluserpw';
Beoordeling
Deadline
Eisen
GRANT USAGE on *.* to sqluser@localhost IDENTIFIED BY 'sqluserpw';
GRANT all privileges ON datapersistentie.* to sqluser@localhost;
4. Maak een tabel in MySQL aan met de volgende gegevens:
CREATE TABLE STUDENT
(ID SMALLINT,
NAAM VARCHAR(255),
ADRES VARCHAR(255),
POSTCODE VARCHAR(255),
PLAATS VARCHAR(255),
GEBOREN DATE,
PRIMARY KEY (ID)
);
5. Maak een Javaprogramma aan dat de CRUD functionaliteiten voor een
Student-object implementeert. Het programma bevat dus minimaal een
Student-klasse, een Main en een klasse die de CRUD functionaliteiten
implementeert.
a. Implementeer een CreateStudent methode (MySQL INSERT van
Student object in tabel) van opdracht 1 met behulp van een
statement.
b. Voeg een student toe aan de tabel STUDENT
6. Laat de database zien aan de docent
Individueel door docent
In les
- Tabel aanwezig
- Student aanwezig
Opdracht week 2: Advanced JDBC
Opdracht
1. Implementeer de methodes uit les 1, opdracht 5, maar nu met een prepared
statement:
a. Implementeer een CreateStudent methode (MySQL INSERT van
Student object in tabel) van opdracht 1 met behulp van een prepared
statement.
b. Voeg een student toe aan de tabel STUDENT
i. Tip: een MySQL SMALLINT correspondeert met het datatype
short in Java. Zorg dus dat je de juiste methode uit de klasse
PreparedStatement gebruikt
2. Maak een tabel in MySQL aan met de volgende gegevens:
CREATE TABLE VAK
4
Beoordeling
Deadline
Eisen
(ID SMALLINT,
CODE VARCHAR(255),
NAAM VARCHAR(255),
PRIMARY KEY (ID)
);
3. Voeg een vak toe aan de tabel VAK op dezelfde manier als in opdracht 1.
4. Maak een tabel in MySQL aan met de volgende gegevens:
CREATE TABLE INSCHRIJVING
( ID SMALLINT,
STUDENT_ID SMALLINT,
VAK_ID SMALLINT,
PRIMARY KEY (ID),
FOREIGN KEY (STUDENT_ID) REFERENCES STUDENT(ID),
FOREIGN KEY (VAK_ID) REFERENCES VAK(ID)
);
5. Maak een Javaprogramma dat een meerdere inschrijvingen toevoegt aan de
database. Het programma bevat dus minimaal:
a. Een Student-klasse die meerdere Vak-objecten kan bevatten
b. een Vak-klasse
c. en een Main en een method die een Student-object met zijn
bijbehorende Vak-objecten in de database opslaat (middels de
tussentabel Inschrijving).
i. Tip: Houd rekening met het feit dat het MySQL datamodel en
Java Object model verschillend zijn. Zo heeft het MySQL
datamodel een tussentabel ‘Inschrijving’, terwijl in Java een
student meerdere Vak-objecten kan aannemen
ii. Tip: Als je een inschrijving toevoegt, en de Student staat nog
niet in de database, voeg deze dan toe. Hetzelfde geldt voor
een Vak: als deze nog niet bestaat, voeg hem dan toe.
Individueel door docent
In les
- Prepared statement implementatie in Java van de CreateStudent methode
- Tabellen vak, inschrijving en student aanwezig, evenals de klassen Student,
en Vak, en de relaties ertussen, zowel in DB (via tussentabel Inschrijving)
als Javaprogramma
- Java implementatie van de Create (insert) van een student met
bijbehorende vakken
- Werkend systeem
Opdracht week 3: ORM
Opdracht
Beoordeling
Deadline
Eisen
Maak een JPA implementatie van Opdracht 1 met Hibernate
1. Lees Hibernate 4.3.1.docx
2. Importeer MyHibernate431.zip
3. Pas aan zodaning dat je met Student objecten kunt persisteren
Individueel door docent
In les
- JPA Hibernate werkend voor Student
5
Download