Illustration einer tropischen Insel mit Palmen und einem hohen Berg

Java Blog für Programmierer

Spring, Hibernate und HSQLDB

· Christian Ullenboom

Nach dem das erste Beispiel das Zusammenspiel von Spring und HSQLDB zeigte, soll das zweite Beispiel statt dem JdbcTemplate das HibernateTemplate nutzen, damit Hibernate die OR-Abbildung übernimmt. Zur Vorbereitung (und Erweiterung) des ersten Beispiels wird zunächst log4j.properties um eine Zeile erweitert:

log4j.rootCategory=ERROR, A1log4j.logger.net.sf.ehcache=ERROR, A1log4j.appender.A1=org.apache.log4j.ConsoleAppenderlog4j.appender.A1.layout=org.apache.log4j.PatternLayoutlog4j.appender.A1.layout.ConversionPattern=%m%n

Für Hibernate sind ebenso weitere Jar-Dateien nötig, so dass sich insgesamt im Pfad befinden müssen:

  • hsqldb.jar
  • log4j-*.jar
  • spring.jar
  • common-logging.jar
  • hibernate3.jar
  • dom4j-*.jar
  • jta.jar
  • common-collections-*.jar
  • ehcache-*.jar
  • cglib-*.jar
  • asm.jar
  • antlr-*.jar

Als erstes zeigt die DAO-Implementierung die Verwendung von HibernateTemplate.

package com.javatutor.dao.hibernate;import java.util.Collection;import org.springframework.orm.hibernate3.HibernateTemplate;import com.javatutor.dao.CustomerDao;import com.javatutor.domain.Customer;public class CustomerDaoHibernateImpl extends HibernateTemplate implements CustomerDao{ @SuppressWarnings("unchecked") public Collection getCustomers() {  return loadAll( Customer.class ); } public Customer findCustomerById( int id ) {  return (Customer) load( Customer.class, id ); } public void save( Customer customer ) {  saveOrUpdate( customer ); }}

Zum Mappen der POJOs auf die Datenbank ist eine Mapping-Datei nötig, es sei denn, man arbeitet mit Java 5 Annotationen. In den Klassenpfad kommt die Datei Customer.hbm.xml.

 "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">     

In der Spring XML-Datei müssen wir den CustomerDaoHibernateImpl anmelden und mit einer SessionFactory versorgen.

Die SessionFactory ist für Hibernate nötig und enthält den Hinweis auf die OR-Mappings und die DataSource. Die DataSource haben wir schon verwendet, doch damit alles persistent bleibt, soll HSQLDB diesmal ins Dateisystem schreiben.

 org.hsqldb.jdbcDriver jdbc:hsqldb:file:/c/:Customers;shutdown=true sa 

Es ist sehr wichtig, den Parameter ;shutdown=true an die Verbindungs-URL zu setzen. Die LocalSessionFactoryBean ist der Produzent für unsere SessionFactory:

    Customer.hbm.xml       org.hibernate.dialect.HSQLDialect     create 

Mit dem hibernate.hbm2ddl.auto ist dann auch in der Applikation das CREATE TABLE unnötig. Und das war’s dann auch schon.

Kategorien: Spring

← Alle Beiträge