Einfacher Anfang mit Hibernate

Status
Nicht offen für weitere Antworten.
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
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!!!
 

HoaX

Top Contributor
du musst die datenbank sauber mit shutdown beenden. wurde hier schon tausendmal besprochen...
 
G

Gast77

Gast
Danke. Ich muss also mit SHUTDOWN die DB beenden. Wenn ichs richtig gelesen habe, kann ich dies bei meinem Beispiel als Parameter mitgeben.

Also folgendermaßen:

Code:
jdbc:hsqldb:file:./hSqlDbData/myDB;shutdown=true

Funktioniert leider trotzdem nicht...
 
G

Gast77

Gast
Hab nochmal geschaut, und mir jetzt das SQL Statement ausgeben lassen...

Code:
Hibernate: insert into DVDS (ID, NAME, GENRE, KOMMENTAR, AUFNAHME) values (null, ?, ?, ?, ?)

Da sollte doch anstelle der Fragezeichen eigentlich auch was drinstehen... Oder nicht?
 

HoaX

Top Contributor
nein, bei prepared statemants existiert kein string in dem alle daten drin stehn. wenn du das logging anpasst bekommst du auch das binding der parameter ausgegeben.

zu shutdown: shutdown=true sagt dass die datenbank beendet wird wenn die letzte connection geschlossen wird. das connection handling übernimmt bei dir hibernate. es kann gut sein dass hibernate die verbindungen nicht ordentlich beendet. setz einfach am ende selbst ein shutdown statement ab und gut ist
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Einfacher Taschenrechner mit Eclipse Java Basics - Anfänger-Themen 3
M Einfacher Taschenrechner Java Basics - Anfänger-Themen 2
P Einfacher regulärer Ausdruck (RegEx) für E-Mail-Adressen Java Basics - Anfänger-Themen 2
EinNickname9 Denkfehler bei einfacher Schleife Java Basics - Anfänger-Themen 83
T Problem mit Lehrzeichen und String bei einfacher Chiffre Java Basics - Anfänger-Themen 8
N Methoden Einfacher SekundenTimer/Stopuhr in Java Java Basics - Anfänger-Themen 2
X Streams und Ausgabe - lässt sich das einfacher schreiben oder schöner schreiben? Java Basics - Anfänger-Themen 5
H wie mehrere variablen in einfacher for-schleife? Java Basics - Anfänger-Themen 2
N Einfacher Rechner (für mich nicht so einfach) Java Basics - Anfänger-Themen 5
? Klassen einfacher Fehler in einem Java Programm. Java Basics - Anfänger-Themen 5
V Einfacher vergleich von Arrays geht schief Java Basics - Anfänger-Themen 2
K Seltsames Ergebnis in Netbeans bei einfacher Multiplikation Java Basics - Anfänger-Themen 5
O Ein einfacher Chatbot (simuliert chat) Java Basics - Anfänger-Themen 7
R Einfacher Regex Java Basics - Anfänger-Themen 3
L Einfacher Methodenaufruf vs. Objekt Java Basics - Anfänger-Themen 4
K Einfacher random namen weitergeben Java Basics - Anfänger-Themen 4
A Lässt sich dieser Ausdruck irgendwie einfacher schreiben? Java Basics - Anfänger-Themen 4
H Einfacher Editor, Einfache Handelsanweisungen Java Basics - Anfänger-Themen 2
H Geht dieser Code noch einfacher (try catch finally) Java Basics - Anfänger-Themen 7
P Geht dieser Code noch einfacher? Java Basics - Anfänger-Themen 16
R Einfacher Timer geht nicht Java Basics - Anfänger-Themen 7
M Einfacher Timer ;) Java Basics - Anfänger-Themen 15
M Einfacher Swing Wizard Java Basics - Anfänger-Themen 3
El_Lobo Methoden Zu viele Getter- und Settermethoden - geht das einfacher? Java Basics - Anfänger-Themen 3
P falsches ergebnis bei einfacher berechnung Java Basics - Anfänger-Themen 3
M Einfacher Fenster-Ablauf Java Basics - Anfänger-Themen 5
M Gittermuster mit Stringbuilder und einfacher Schleife erstellen Java Basics - Anfänger-Themen 19
T Collections Werte aus einer HashMap auslesen, oder gehts auch einfacher ? Java Basics - Anfänger-Themen 6
D Code einfacher,eleganter programmieren Java Basics - Anfänger-Themen 24
F Datentypen Welchen Wert hat ein einfacher Datentyp nach der Deklaration? Java Basics - Anfänger-Themen 6
C einfacher Link zu *.html Datei möglich? Java Basics - Anfänger-Themen 4
Hindi93 Einfacher Code funktioniert nicht... Java Basics - Anfänger-Themen 6
P Einfacher Rechner Java Basics - Anfänger-Themen 2
T Einfacher Kalender Java Basics - Anfänger-Themen 17
B Frage zu einfacher Rechnung Java Basics - Anfänger-Themen 3
B Hilfe bei einfacher Funktion - Possible loss of precision Java Basics - Anfänger-Themen 2
M ein einfacher button.. ich verzweifel...... Java Basics - Anfänger-Themen 41
F Von int zu double bei einfacher Rechnung Java Basics - Anfänger-Themen 2
C Einfacher Installer Java Basics - Anfänger-Themen 2
Chucky Einfacher Taschenrechner Verbesserungsvorschläge Java Basics - Anfänger-Themen 13
G Problem mit einfacher For-Schleife und Double Wert Java Basics - Anfänger-Themen 4
D Probleme bei einfacher Rechnung Java Basics - Anfänger-Themen 3
M Konstruktor-Aufruf im Konstruktor, aber nicht am Anfang? Java Basics - Anfänger-Themen 4
K Wie kann ich ein Element an den Anfang setzten ? Java Basics - Anfänger-Themen 1
berserkerdq2 Warum macht man in IJVM am Anfang Bipush 0? Java Basics - Anfänger-Themen 1
M Java Anfang Java Basics - Anfänger-Themen 13
L Anfang von Programmtext Java Basics - Anfänger-Themen 11
T Netzwerkprogrammierung Anfang Java Basics - Anfänger-Themen 9
J am Anfang eines String ein Leerzeichen löschen Java Basics - Anfänger-Themen 6
N Anfang eine Array Schleife finden Java Basics - Anfänger-Themen 18
F Interface JTextField am Anfang unsichtbar o_o Java Basics - Anfänger-Themen 3
H Tetris anfang Java Basics - Anfänger-Themen 6
V Bin eigentlich noch VOR dem Anfang .... Java Basics - Anfänger-Themen 9
X Best Practice SUCHE ein gutes Javabuch! (kein Anfang von 0) Java Basics - Anfänger-Themen 5
D ListIterator auf Anfang zurücksetzen Java Basics - Anfänger-Themen 2
S Video2Brain Java7 gut fürn Anfang? Java Basics - Anfänger-Themen 8
M Komplett anfang in Java Java Basics - Anfänger-Themen 9
O Erste Schritte Aller Anfang ist schwer ! Bitte um Unterstützung Java Basics - Anfänger-Themen 6
M Aller anfang ist schwer :D Hilfe! Java Basics - Anfänger-Themen 18
S Erste Schritte Von Anfang an ! Java Basics - Anfänger-Themen 6
J Variablen Letzte berechnete variable am anfang Ausgeben ? Java Basics - Anfänger-Themen 4
B Anfang des Damenproblems Java Basics - Anfänger-Themen 82
H Problem beim Anfang von Java (Java Editor) Java Basics - Anfänger-Themen 2
E Listen vereinen, wenn Elemente am Anfang/Ende übereinstimmen Java Basics - Anfänger-Themen 2
J Bufferedreader nich von anfang an. Java Basics - Anfänger-Themen 14
Z TableCellRenderer anfang so richtig? Java Basics - Anfänger-Themen 13
M JTextPane an den Anfang springen Java Basics - Anfänger-Themen 8
Povlsen84 String - Zeichen am Anfang entfernen Java Basics - Anfänger-Themen 11
P Ein Programm vorzeitig beenden und wieder an den Anfang springen. Java Basics - Anfänger-Themen 7
K Befehl um am Anfang einer Methode zu kommen? Java Basics - Anfänger-Themen 9
A Filereader - An den Anfang des File springen Java Basics - Anfänger-Themen 2
P Buffered Reader an Anfang setzen Java Basics - Anfänger-Themen 4
A Aus switch case an den Anfang? Java Basics - Anfänger-Themen 7
B so ziemlich am anfang Java Basics - Anfänger-Themen 11
G datei -> zeile am anfang einfügen/löschen Java Basics - Anfänger-Themen 4
K Ganz am Anfang - Java + Datenbank Java Basics - Anfänger-Themen 6
G Aller anfang is schwer. Java Basics - Anfänger-Themen 4
C Java-Anfang main void public? Java Basics - Anfänger-Themen 5
T Grundlagen ganz am Anfang Java Basics - Anfänger-Themen 12
R An den Anfang einer While-Schleife springen Java Basics - Anfänger-Themen 2
D wieso ist die combobox nicht von anfang an aktiviert? Java Basics - Anfänger-Themen 4
A Iterator auf anfang setzen Java Basics - Anfänger-Themen 5
G in txt file text nicht am ende sondern am anfang anhängen! Java Basics - Anfänger-Themen 12
A ganz am Anfang Java Basics - Anfänger-Themen 15
K Zum Anfang einer ArrayList springen Java Basics - Anfänger-Themen 4
J TextArea auf Anfang setzen Java Basics - Anfänger-Themen 3
I Element n aus Datenbank Query (JPA / Hibernate) Java Basics - Anfänger-Themen 3
I JPA / Hibernate "Predicate" kombinieren in der gleichen Query Java Basics - Anfänger-Themen 1
I BLOB / CLOB und Hibernate... Ratschläge benötigt Java Basics - Anfänger-Themen 10
B HQL / Hibernate, GroupBy und Ausgabe als Double Java Basics - Anfänger-Themen 1
D hibernate annotation Java Basics - Anfänger-Themen 2
D hibernate: string vs setparameter Java Basics - Anfänger-Themen 1
V kennt jemand empfehlenswerte online tutorials zur Hibernate ? gerne auch englisch. Java Basics - Anfänger-Themen 4
Todesbote Int Array mit Hibernate in Datenbank speichern. Java Basics - Anfänger-Themen 2
DStrohma Best Practice Hibernate für kleine Anwendung nutzen? Java Basics - Anfänger-Themen 4
I Hibernate Java Basics - Anfänger-Themen 4
T Hibernate Fehlermeldung Java Basics - Anfänger-Themen 9
D [Hibernate] Objektinhalte auslesen Java Basics - Anfänger-Themen 8
N Hibernate "Hello World" Tutorial gesucht Java Basics - Anfänger-Themen 9
F Logging von Hibernate-Statements und Glassfish Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben