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