HSQLDB in Eclipse • Data Tools Platform auf Exlipse Marketplace (für Kepler)
HSQLDB in Eclipse
Data Source Explorer
1.
2.
Data Source Explorer: Data source Datenbankname
1.
3. Datenbankverzeichniis
2.
Data Source Explorer: Treiber
.
4.
2. 6. Hsqldb.jar Pfad
Hibernate ORM • http://sourceforge.net/projects/hibernate/files/hib ernate4/4.3.5.Final/hibernate-release4.3.5.Final.zip/download • Alle Jars aus dem Verzeichnis /required ins Projekt nehmen. • Achtung: Hibernat Beispiele im 101repo sind mit älterer Version erstellt (don‘t mix).
Hibernate Beispiel • Was muss man tun, um damit Objekte in einer relationalen DB gespeichert oder aus ihr wiederhergestellt werden Können?
• 1. Die Klassen müssen ein paar Konventionen erfüllen! • 2. Für jede Klasse muss ein Mapping via XML definiert werden. • 3. Eine Hibernate-Konfigurationsdatei muss die Datenbank und die Mapping-Dateien verknüpfen.
Das folgende Beispiel stammt von: http://docs.jboss.org/hibernate/core/3.3/reference/en/html/tutorial.html
Eine einfache Event-Klasse package org.hibernate.tutorial.domain; Wird zum PrimärJedes Objekt muss eine schlüssel in DB eindeutige ID haben import java.util.Date; public class Event { private Long id; Jedes Objekt muss einen private String title; Konstruktor haben private Date date; public Event() {} Getter und Setter mit public Long getId() { return id; } Standardnamen private void setId(Long id) { this.id = id; } public Date getDate() { return date; } public void setDate(Date date) { this.date = date; } private ! public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } }
Auslesen aller Objekte aus Tabelle private List listEvents() { Session session = HibernateUtil.getSessionFactory().getCurrentS ession(); session.beginTransaction(); List result = session.createQuery("from Event").list(); session.getTransaction().commit(); return result; } Select * from Event
Beziehungen darstellen package org.hibernate.tutorial.domain; public class Person { private Long id; private int age; private String firstname; private String lastname; public Person() {} // Accessor methods for all properties, private setter for 'id' }
Beziehungen darstellen m:n public class Person {
private Set events = new HashSet();
public Set getEvents() { return events; }
public void setEvents(Set events) { this.events = events; } }
Person
Teilnahme
Event
m:n Datenbankschema Person
Person_Event
Event
Person_ID Age Firstname Lastname
Person_ID Event_ID
Event_ID Event_Date Title
Primärschlüssel
private void addPersonToEvent(Long personId, Long eventId) { Session session = HibernateUtil.getSessionFactory().getCurrentSession(); session.beginTransaction(); Person aPerson = (Person) session.load(Person.class, personId); Event anEvent = (Event) session.load(Event.class, eventId); aPerson.getEvents().add(anEvent); session.getTransaction().commit(); } Änderung am Objekt
Änderungen in DB übertragen (automatic dirty checking)
Daten von Person und Event sidn jetzt als Objekt und DB-Eintrag vorhanden
1:n Datenbankschema Email
Person
Person_Event
Event
Person_ID Email_address
Person_ID Age Firstname Lastname
Person_ID Event_ID
Event_ID Event_Date Title
Primärschlüssel
1:n Beziehung Java public class Person { … private Set emailAddresses = new HashSet(); public Set getEmailAddresses() { return emailAddresses; } public void setEmailAddresses(Set emailAddresses) { this.emailAddresses = emailAddresses; }