---
title: 'Spring, Hibernate und HSQLDB'
url: 'https://tutego.de/blog/javainsel/2005/12/spring-hibernate-und-hsqldb'
markdown: 'https://tutego.de/blog/javainsel/2005/12/spring-hibernate-und-hsqldb.md'
date: '2005-12-21'
description: '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…'
taxonomy:
  category:
    - Spring
---

# Spring, Hibernate und HSQLDB

![Illustration einer tropischen Insel mit Palmen und einem hohen Berg](https://tutego.de/blog/javainsel/user/themes/tutego/images/insel-cover.jpg)# Java Blog für Programmierer

[Java Blog für Programmierer](https://tutego.de/blog/javainsel/)

## Spring, Hibernate und HSQLDB

21.12.2005 · [Christian Ullenboom](https://tutego.de/blog/javainsel/author/admin/)

Nach dem das [ erste Beispiel](http://javainsel.blogspot.com/2005/12/mit-spring-und-dem-jdbctemplate-auf.html) 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:

```properties
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`.

```java
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*.

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

```text

```

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

```text

```

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.

```text
 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:

```text
    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](https://tutego.de/blog/javainsel/category/spring/)

[← Alle Beiträge](https://tutego.de/blog/javainsel/)

---

## Navigation

- Previous: [JSmooth mit Ant Build Skript](https://tutego.de/blog/javainsel/2005/12/jsmooth-mit-ant-build-skript.md)
- Next: [JAXB 2.0 und XJC in einem Ant-Skript nutzen](https://tutego.de/blog/javainsel/2005/12/jaxb-2-0-und-xjc-in-einem-ant-skript-nutzen.md)
