G
Gast77
Gast
Hallo zusammen,
ich möchte mal einen Einstieg in Hibernate bekommen und habe mir dazu überlegt, dass ich einfach mal eine "DVD-Verwaltung" realisieren. Die Daten sollen jedoch nicht in einer "richtigen DB" abgelegt werden, sondern in Files der HSqlDb.
Habe dazu folgenden Code zusammengewurschtelt. Die entsprechende GUI dazu mach ich evtl. später. Mir kommt es eigentlich nur darauf an, die Daten entsprechend unter verwendetung von Hibernate und der HSqlDB in Files abzulegen.
Doch irgendwie klappt das nicht so recht... Irgendwie scheint nach Beendigung des Programms die "DB" wieder leer zu sein, und nur zur Laufzeit die Daten zur Verfügung zu stehen.
Hier mal mein Code:
Main.java
hibernate.cfg.xml
dvd.hbm.xml
Dvd.java
Vielen Dank für eure Hilfe!!!
ich möchte mal einen Einstieg in Hibernate bekommen und habe mir dazu überlegt, dass ich einfach mal eine "DVD-Verwaltung" realisieren. Die Daten sollen jedoch nicht in einer "richtigen DB" abgelegt werden, sondern in Files der HSqlDb.
Habe dazu folgenden Code zusammengewurschtelt. Die entsprechende GUI dazu mach ich evtl. später. Mir kommt es eigentlich nur darauf an, die Daten entsprechend unter verwendetung von Hibernate und der HSqlDB in Files abzulegen.
Doch irgendwie klappt das nicht so recht... Irgendwie scheint nach Beendigung des Programms die "DB" wieder leer zu sein, und nur zur Laufzeit die Daten zur Verfügung zu stehen.
Hier mal mein Code:
Main.java
Code:
package film;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
public class Main {
private SessionFactory sessionFactory;
public Main() {
try {
System.out.println( "------------------------------------------------------" );
System.out.println( "Initializing Hibernate" );
sessionFactory = new Configuration().configure().buildSessionFactory();
System.out.println( "Finished Initializing Hibernate" );
System.out.println( "------------------------------------------------------" );
} catch( HibernateException ex ) {
ex.printStackTrace();
System.exit( 5 );
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
String name = "test1";
String genre = "Action";
String kommentar = "Dies ist ein Kommentar";
String aufnahme = "DreamHD";
Main main = new Main();
main.addDVD(name, genre, kommentar, aufnahme);
main.showDVDs();
}
private void addDVD( String name, String genre, String kommentar, String aufnahme )
{
Session sess = null;
Transaction trx = null;
try {
sess = sessionFactory.openSession();
trx = sess.beginTransaction();
Dvd dvd = new Dvd();
dvd.setName( name );
dvd.setGenre( genre );
dvd.setKommentar(kommentar);
dvd.setAufnahme(aufnahme);
sess.save( dvd );
trx.commit();
} catch( HibernateException ex ) {
if( trx != null )
try { trx.rollback(); } catch( HibernateException exRb ) {}
throw new RuntimeException( ex.getMessage() );
} finally {
try { if( sess != null ) sess.close(); } catch( Exception exCl ) {}
}
}
private void showDVDs()
{
Session sess = null;
Transaction trx = null;
try {
sess = sessionFactory.openSession();
trx = sess.beginTransaction();
List dvds = sess.createQuery( "from Dvd" ).list();
for( int i=0; i<dvds.size(); i++ ) {
Dvd dvd = (Dvd)dvds.get( i );
System.out.println( "Titel: " + dvd.getName()
+ " aus der Kategorie " + dvd.getGenre()
+ " Kommentar:" + dvd.getKommentar()
+ " gespeichert: " + dvd.getAufnahme() );
}
trx.commit();
} catch( HibernateException ex ) {
if( trx != null )
try { trx.rollback(); } catch( HibernateException exRb ) {}
throw new RuntimeException( ex.getMessage() );
} finally {
try { if( sess != null ) sess.close(); } catch( Exception exCl ) {}
}
}
}
hibernate.cfg.xml
Code:
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">
org.hsqldb.jdbcDriver
</property>
<property name="hibernate.connection.url">
jdbc:hsqldb:file:./hSqlDbData/myDB;shutdown=false
</property>
<property name="hibernate.connection.username">sa</property>
<property name="hibernate.connection.password"></property>
<property name="dialect">org.hibernate.dialect.HSQLDialect</property>
<property name="show_sql">false</property>
<property name="transaction.factory_class">
org.hibernate.transaction.JDBCTransactionFactory
</property>
<property name="hibernate.cache.provider_class">
org.hibernate.cache.HashtableCacheProvider
</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<mapping resource="dvd.hbm.xml"/>
</session-factory>
</hibernate-configuration>
dvd.hbm.xml
Code:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="film.Dvd" table="DVDS">
<id name="id" column="ID" type="integer">
<generator class="native"/>
</id>
<property name="name" column="NAME" type="string" not-null="true"/>
<property name="genre" column="GENRE" type="string"/>
<property name="kommentar" column="KOMMENTAR" type="string"/>
<property name="aufnahme" column="AUFNAHME" type="string" not-null="true"/>
</class>
</hibernate-mapping>
Dvd.java
Code:
package film;
public class Dvd {
private int id;
private String name;
private String genre;
private String kommentar;
private String aufnahme;
public int getId() { return id; }
public String getName() { return name; }
public String getGenre() { return genre; }
public String getKommentar() { return kommentar; }
public String getAufnahme() { return aufnahme; }
public void setId( int id ) { this.id = id; }
public void setName( String name ) { this.name = name; }
public void setGenre( String genre ) { this.genre = genre; }
public void setKommentar( String kommentar ) { this.kommentar = kommentar; }
public void setAufnahme( String aufnahme ) { this.aufnahme = aufnahme; }
}
Vielen Dank für eure Hilfe!!!