Document:Annotations Onderzoek
| 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"/>@Column(name = "EVENT_TITLE") private String title;
Om het beter te begrijpen de volgende illustratie:
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