Document:Annotations Onderzoek

From WOSI
Jump to: navigation, search
Annotations Onderzoek
Datum 16 april 2008
Fase Fase 5
Versie 1.0
Status
Auteurs Joris Binnekade
Goedgekeurd door
Aangepast door

In dit document vind je allereerst een korte handleiding over het gebruik van Hibernate zelf, en de uitbreiding daarvan. Daarna zet ik kort de voordelen en nadelen van de techniek op een rijtje, zodat deze mogelijk met de groep kunnen worden besproken.

Contents

Hibernate

Hibernate[1] is een Object/Relational Mapping (ORM) oplossing voor de Java programmeertaal. Het is een gratis, open source framework dat beschikbaar is onder de LGPL licentie. Hibernate werd door een internationaal team van Java ontwikkelaars gemaakt. Het is een eenvoudig te gebruiken framework voor het koppelen van een object georiënteerd domeinmodel aan een traditionele relationele database.

Hibernate zorgt voor de koppeling van Java klassen aan databasetabellen (en voor het koppelen van Java datatypes aan SQL datatypes), maar zorgt tevens voor de ophaalfuncties waardoor het ontwikkeltraject aanmerkelijk kan verkorten. De ontwikkelaar hoeft zich door gebruik te maken van dit framework niet meer bezig te houden met SQL en JDBC verbindingen.

Het doel van Hibernate is om de ontwikkelaar zoveel als mogelijk te vrijwaren van programmeertaken die gerelateerd zijn aan het vastleggen van de gegevens. Hibernate is eenvoudig in een project te incorporeren, of dat nu een nieuwe ontwikkeling, of het ontsluiten van bestaande systemen betreft. Hibernate genereert de benodigde SQL instructies, en de ontwikkelaar hoeft geen code op te nemen voor het verwerken van de resultset en conversie van gegevenstypes. Daardoor kan een applicatie worden ontwikkeld die eenvoudig portable is te maken naar alle SQL databases.

In de praktijk

Om Hibernate te kunnen gebruiken zijn er maar vier dingen nodig:

  • Het configuratie bestand(hibernate.cfg.xml)
  • Een opstart klasse voor de Hibernate setup
  • JavaBean klassen
  • Hibernate mapping bestanden(hbm.xml)

Deze kunnen op verschillende manieren worden geimplementeerd, bijvoorbeeld door de XML bestanden van Spring te gebruiken om de configuratie te implementeren.

Ga voor meer informatie naar Bijlage 1: Hibernate project.

Hibernate Annotations

Hibernate Annotations worden gebruikt om een vervanging te bieden voor de Hibernate mapping bestanden. In die bestanden word een link gelegd tussen de database tabellen en de JavaBeans. Dat gaat op de volgende manier:
<property name="title" column="EVENT_TITLE"/>
Hier word aangegeven dat er een waarde in de JavaBean staat met variabelenaam ‘title’. Deze moet worden opgeslagen in de database in de kolom ‘EVENT_TITLE’. Annotations zorgen ervoor dat de eigenschappen van de kolommen in de JavaBeans zelf kunnen worden aangegeven.
@Column(name = "EVENT_TITLE")
private String title;
Hier gebeurt precies hetzelfde als in het stukje code boven, behalve dat de eigenschappen nu zelf in de Java code staan.

Om het beter te begrijpen de volgende illustratie:

Image:Verschil_metzonder_annotations.GIF
Bekijk voor meer informatie het project beschreven in Bijlage 2: Hibernate annotations of probeer het uit in Eclipse.

Gebruik van Annotations in de WOSI projecten

Benodigde aanpassingen

  • De maven bestanden(pom.xml) moeten worden aangepast om de nieuwe dependencies te laden(zie Bijlage 1 en 2 voor de dependencies)
  • Het domeinmodel moet Annotations krijgen(Project POJO)
  • De Hibernate Annotation configuratie kan op een aangepaste manier in het bestand dao-configuration.xml komen.

Er zal geen aanpassing van de Javacode zelf nodig zijn in de projecten.

Voordelen

  • Overzichtelijker, omdat er direct te zien is wat voor soort gegevens er in een bepaalde kolom moeten komen en de persoon die de objecten/tabelkoppeling moet wijzigen hoeft niet te wisselen tussen twee bestanden en telkens de waardes bij elkaar te zoeken.
  • Management kost minder moeite, want er blijven half zoveel bestanden over als alle domeinklassen gebruik maken van annotations.

Nadelen

  • Training voor programmeurs. Alle software-engineers moeten een nieuwe techniek aanleren, en ook de studenten in de toekomstige semesters moeten het onder de knie krijgen.
  • Benodigde tijd voor implementatie. Het aanpassen van het domein(de pojo’s) duurt in principe niet lang omdat er geen javacode zelf veranderd hoeft te worden, alleen maar annotations toegevoegd. Het kan wel wat langer duren om uit te zoeken hoe de techniek precies geconfigureerd moet worden in de projecten.

Bijlage 1: Hibernate project

Bij dit document hoort een Eclipse project met een simpele implementatie van Hibernate, zoals in de officiele documentatie[2] beschreven staat. Dit is te vinden in het bestand "(Eclipse project) Hibernate project.rar[3]".

In het project vind je onder meer de volgende bestanden:

  • Hibernate.cfg.xml; Dit is het configuratiebestand van Java. Hierin staan de eigenschappen van de verbinding beschreven.
  • HibernateUtil.java; Met deze Java klasse word de verbinding opgestart.
  • Event.hbm.xml; Dit is een mapping bestand behorende bij Event.java. Hierin staan de gegevens van de kolommen van de tabel die hoort bij de JavaBean.
  • Event.java; Een standaard JavaBean.
  • EventManager.java; Een testklasse die met behulp van Hibernate een record in de database opslaat.

Om het project in de praktijk te kunnen gebruiken zijn de volgende Java libraries nodig, welke te downloaden zijn op hibernate.org:

  • antlr.jar
  • cglib.jar
  • asm.jar
  • asm-attrs.jars
  • commons-collections.jar
  • commons-logging.jar
  • hibernate3.jar
  • jta.jar
  • dom4j.jar
  • log4j.jar

Bijlage 2: Hibernate Annotations project

In "(Eclipse project) Hibernate Annotations project.rar[4]" staat een Hibernate project voor Eclipse dat gebruikt maakt van Annotations. Het verschilt weinig van het andere project. Ook dit project is het voorbeeld dat gebruikt word in de officiele documentatie[5].

Om het project in de praktijk te kunnen gebruiken zijn, naast de libraries uit bijlage 1, de volgende Java libraries nodig welke te downloaden zijn op hibernate.org:

  • hibernate-annotations.jar
  • hibernate-comons-annotations.jar
  • ejb3-persistence.jar

Referenties

  1. Wikipedia - Hibernate
  2. Hibernate.org – Hibernate documentatie
  3. Eclipse project met Hibernate
  4. Eclipse project met Hibernate en Annotations
  5. Hibernate.org – Hibernate Annotations documentatie
Personal tools