This page (revision-5) was last changed on 05-Jul-2011 20:13 by ThomasThiessen 

This page was created on 19-Jun-2011 23:22 by ThomasThiessen

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Page revision history

Version Date Modified Size Author Changes ... Change note
5 05-Jul-2011 20:13 11 KB ThomasThiessen to previous
4 26-Jun-2011 14:32 8 KB ThomasThiessen to previous | to last
3 26-Jun-2011 14:24 8 KB ThomasThiessen to previous | to last
2 20-Jun-2011 17:27 6 KB ThomasThiessen to previous | to last
1 19-Jun-2011 23:22 6 KB ThomasThiessen to last

Page References

Incoming links Outgoing links

Version management

Difference between version and

!!Hibernate!!!Hibernate>> <<mittelsGrundkonfiguration>> <<persistence.xml konfigurieren(Datenbankanbindung)>>
<<Die
Bevor
>> <<wichtigstenwir>> <<Parameterdie>> <<fürFenstergestaltung>> <<dievon>> <<DatenbankanbindungEingabemasken>> <<könnenbeginnen>> <<beischaffen>> <<Hibernatewir>> <<über >>die <<DateiBasis>> <<hibernate.cfg.xmlfür>> <<oderdie>> <<persistence.xml vorgegeben werden. Datenbankanbindung.>>


<<!Achtung:!!Hibernate>>
<<DieHibernate>> <<Dateienist>> <<hibernate.cfg.xmlein>> <<Open-Source-Projekt >>und <<persistence.xmlwird>> <<sind sich Inhaltlich sehr ähnlich, aber NICHT untereinander austauschbar. Der Aufruf im Programm ist geringfügig unterschiedlich.



Wir verwenden
>>für unsere <<ApplikationBeispielanwendung>> <<die persistence.xml Datei.eingesetzt.>>
<<===============================================================


Der
Mit
>> <<VorteilHibernate>> <<derwerden>> <<persistence.xmlJava-Objekte>> <<Dateidauerhaft>> <<istin>> <<hauptsächlicheiner>> <<dierelationalen>> <<zusätzlicheDatenbank>> <<Möglichkeitgespeichert>> <<auch die Konfiguration für Java persistence API (JPA) >>und <<Diverseaus>> <<weitereentsprechenden>> <<APIśDatensätzen>> <<einzutragen.
Die
wiederum
>> <<persistence.xmlObjekte>> <<bietetin>> <<alsoJava>> <<dieerzeugt.>> <<MöglichkeitMit>> Hibernate <<oderist>> <<alternativeine>> <<JPAdatenbankunabhängige>> <<einzusetzen.Entwicklung>> <<Beidemöglich.>> <<Möglichkeiten können sogar parallel genutzt werden. >>


<<Die!!HSQL>> <<ParameterDatenbank
Als
>> <<derDatenbank>> <<persistence.xmlsetzen>> <<Dateiwir>> <<werdenzunächst>> <<imHSQL>> <<Programmein.>> <<fürHSQL>> <<dieist>> <<"Entityeine>> <<Managerfreie>> <<Factoryvollständig>> <<(EMF)"in>> <<benötigt.Java>> <<Dieprogrammierte>> <<"Entityrelationale>> <<ManagerSQL-Datenbank>> <<Factoryund>> <<(EMF)"steht>> <<entsprichtunter>> <<dereiner>> <<Sessionfreien>> <<Factory von Hibernate.Lizenz.>>
<<
Die
HSQL
>> <<Konfigurationbenötigt>> <<derlediglich>> <<"Entity Manager Factory (EMF)" erfolgt über >>die <<KonfigurationsdateiDatei>> <<oderhsqldb.jar.>> <<überAlle>> <<einenDaten>> <<Satzwerden>> <<vonin>> <<Mappingeiner>> <<Metadateneinfachen>> <<(annotierteTextdatei>> <<Klassen)in>> <<undKlartext>> <<wirdgespeichert.>> <<auchMit>> <<"persistenceeinem>> <<Unit"einfachen>> <<genannt.Texteditor>> <<


Die
ist
>> <<Dateieine>> <<persistence.xmlÄnderung>> <<mussder>> <<sichDaten>> <<immöglich,>> <<Verzeichnissollte>> <<"src/META-INF/"aber>> <<dervermieden>> <<Anwendung gespeichert >>werden.<< Bitte auf Groß- Kleinschreibung achten.>>
<<
Für
>> << <persistence>
HSQL
>> << wird>> << <persistence-unitkein>> <<name="dbfilme">
gesonderter
>> << SQL-Server>> << wie>> << <provider>org.hibernate.ejb.HibernatePersistence</provider>
z.B.
>> << bei>> << MySQL>> << <class>de.tth.genre.Genre</class>
oder
>> << PostgreSQL>> << benötigt.>> << <properties>
Aufgrund
>> << der>> << einfachen>> << Konfiguration>> << <propertyund>> <<name="hibernate.archive.autodetection"Übertragbarkeit>> << der>> <<value="class"/>
Daten
>> << mit>> << dem>> << Programm>> << <propertyauf>> <<name="hibernate.connection.driver_class"andere>> <<value="org.hsqldb.jdbcDriver"/>
Rechner
>> << bzw.>> << die>> << Verwendung>> << <propertyschreibgeschützt>> <<name="hibernate.connection.url"von>> << einer>> << CD/DVD>> << wird>> << dieses>> << value="jdbc:hsqldb:datenbank"/>
Beispiel
>> << mit>> << HSQL>> << starten.>> << <property name="hibernate.connection.username"     value="SA"/>>>
<<        <property name="hibernate.connection.password"     value=""/>>>
<<        <property name="hibernate.dialect"                 value="org.hibernate.dialect.HSQLDialect"/>!!log4j>>
<<log4j>> << ist>> << ein>> << Framework>> << <propertyzum>> <<name="hibernate.hbm2ddl.auto"Loggen>> << von>> << Anwendungsmeldungen>> << in>> <<     value="update"/>Java.>>
<<        <property name="hibernate.cache.provider_class"    value="org.hibernate.cache.NoCacheProvider"/>>>
<<      </properties>>>
<<!!Dateien>> << herunterladen>> << </persistence-unit>
und
>> << </persistence> einrichten>>

<<
Mit
Zunächst
>> <<persistence-unit >>wird <<einfür>> <<eindeutigeralle>> <<NameModule>> <<festgelegt.das>> <<Wennaktuellste>> <<nurArchiv>> <<eineheruntergeladen:>> <<Datenbank verwendet wird muss dieser Parameter nicht gesetzt werden. >>
<<    <persistence-unit name="dbfilme">>>
<<
Im
Hibernate
>> <<Quellcode wird durch folgende Zeile zugegriffen:
>> <<@PersistenceContext(unitNamehttp://www.hibernate.org/>> <<= "dbfilme")>>

<<FolgendeHSQL>> <<Zeile soll die Verbindung zu den Klassen ermöglichen:
>> <<hibernate.archive.autodetection

!hibernate.connection.driver_class
Hiermit
>> <<wird der Datenbanktreiber festgelegt.

Unsere drei wichtigesten Treiber sind:

hsql
>>    <<  = org.hsqldb.jdbcDriverhttp://www.hsqldb.org/>>

<<~MySQLlog4j>>      <<= com.mysql.jdbc.Driverhttp://logging.apache.org/log4j/>>

<<~PostgreSQL = org.postgresql.Driver>>
<<

!hibernate.connection.url
Statt
In
>> <<localhostunserem>> <<kannProjekt>> <<einelegen>> <<beliebigewir>> <<(erreichbare)nun>> <<IP-Adresseein>> <<eingegebenneues>> <<werden.
Für
Verzeichnis
>> <<useremit>> <<wichtigstendem>> <<dreiName>> <<Datenbanken"lib">> <<folgend die entsprechenden Adressen:an.>>

<<hsqlEclipse:>> << (File>> << />> << New>> <<=/>> <<jdbc:hsqldb:fileFolder)>> <<(Ausgabeals>> <<inFolder>> <<einename>> <<lokalegeben>> <<Datei

~MySQL
wir
>> << "lib">> <<   = jdbc:mysql://localhost:3306/Datenbanknameein.>>

<<~PostgreSQLIn>> <<=diesem>> <<jdbc:postgresql://localhost:5432/Datenbankname


!hibernate.connection.username
Der
lib
>> <<Benutzername->> <<istVerzeichnis>> <<beiwerden>> <<HSQLzukünftig>> <<mitalle>> <<SAfür>> <<vorbelegt.


!hibernate.connection.password
Das
das
>> <<PasswortProjekt>> <<kannbenötigten>> <<beiBibliotheken>> <<HSQL leer bleiben. Für andere SQL-Server kann hier ein entsprechendes Passwort hinterlegt werden.gespeichert.>>
<<
!hibernate.dialect
Jede
Insbesondere
>> <<Datenbankdie>> <<unterstütztDateien>> <<einevon>> <<etwasHibernate>> <<andereändern>> <<Versionsich>> von <<SQL.Version>> <<Diezu>> <<UnterschiedeVersion.>> <<betreffenDaher>> <<u.a.werden>> <<diediese>> <<Syntaxhier>> <<dernicht>> <<Spalteneinzeln>> <<z.B.aufgezählt.>> <<derÜblicherweise>> <<Datentypen,befindet>> <<dersich>> <<verfügbareninnerhalb>> <<SQL-Funktionendes>> <<usw. Durch den ausgewählten Dialekt vereinheitlicht >>Hibernate <<denVerzeichnisses>> <<Zugriffeine>> <<aufreadme.txt>> <<diverseDatei.>> <<Datenbanken.
In
>> <<
dierser
>> << hsqlDatei>> << werden>> << alle>> << benötigten>> <<=Bibliotheken>> <<org.hibernate.dialect.MySQLDialect
und
>> << MySQLderen>> << Einsatzzweck>> <<   = org.hibernate.dialect.HSQLDialectgenannt.>>
<<  PostgreSQL = org.hibernate.dialect.PostgreSQLDialect>>
<<

Für
>> << HSQL>> << wird,>> << wie>> <<<!--bereits>> <<SQLerwähnt>> <<dialectnur>> <<-->
die
>> << Datei>> << hsqldb.jar>> <<  <property name="dialect">org.hibernate.dialect.HSQLDialect</property>>>
<<

!hibernate.hbm2ddl.auto

hbm2ddl.auto
und
>> <<=für>> <<updateunser>> <<=Loggin>> <<erstellt Hibernate >>die <<TabellenDatei>> <<automatisch, sofern sie noch nicht existieren.log4j-Version.jar>>
<<
hbm2ddl.auto
in
>> <<=unser>> <<createlib>> <<=->> <<LÖSCHTVerzeichnis>> <<ALLE TABELLEN und erstellt automatisch neue Tabellen.kopiert.>>

<<


>>!!Hibernate mittels hibernate.cfg.xml konfigurieren
<<!DieseDie>> <<Beispielwichtigsten>> <<wirdParameter>> <<nurfür>> <<genanntdie>> <<umDatenbankanbindung>> <<diekönnen>> <<Alternativebei>> <<von >>Hibernate <<zuüber>> <<nennen.

DIESE VORGEHENSWEISE WENDEN WIR IN UNSEREM BEISPIEL JEDOCH NICHT AN.
====================================================================

Um die
>>Datei hibernate.cfg.xml <<einzusetzenvorgegeben>> <<musswerden.>> <<mit der Session Factory gearbeitet werden!

>>Die Datei hibernate.cfg.xml sollte sich im Root-Verzeichnis des Classpaths der Anwendung gespeichert werden. Das ist das Verzeichnis "src" <<einesin>> <<Projektes.unserem Projekt.>>

<<
>>  Es folgt nun die komplette Datei: hibernate.cfg.xml

 <?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>
      //
      <!-- Database connection settings -->
      <property name="connection.driver_class">org.hsqldb.jdbcDriver</property>
      <property name="connection.url">jdbc:hsqldb:file</property>
      <property name="connection.username">SA</property>
      <property name="connection.password"></property>
      //
      <!-- SQL dialect -->
      <property name="dialect">org.hibernate.dialect.HSQLDialect</property>
      //
      <!-- Disable the second-level cache  -->
      <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
      //
      <!-- Echo all executed SQL to stdout -->
      <property name="show_sql">true</property>
      //
      <!-- Drop and re-create the database schema on startup -->
      <property name="hbm2ddl.auto">update</property>
      //
      <!-- Mappings -->
      <mapping class="de.tth.genre.Genre"/>
      //
      </session-factory>
   </hibernate-configuration>


Die Dokumententypdeklaration wird vom XML-Parser verwendet    
 <!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">


Hier werden die Datenbankspezifischen Angaben durchgeführt.

!connection.driver_class
Hiermit wird der Datenbanktreiber festgelegt.

<<Unsere drei wichtigesten Treiber sind:
<<
hsql       = org.hsqldb.jdbcDriver

MySQL      = com.mysql.jdbc.Driver

PostgreSQL = org.postgresql.Driver


!connection.url
hsql       = jdbc:hsqldb:file (Ausgabe in eine lokale Datei

MySQL      = jdbc:mysql://localhost:3306/Datenbankname

PostgreSQL = jdbc:postgresql://localhost:5432/Datenbankname


      <!-- Database connection settings -->
      <property name="connection.driver_class">org.hsqldb.jdbcDriver</property>
      <property name="connection.url">jdbc:hsqldb:file</property>
      <property name="connection.username">SA</property>
      <property name="connection.password"></property>


!username
Der Benutzername ist bei HSQL mit SA vorbelegt.


!password
Das Passwort kann bei HSQL leer bleiben. Für andere SQL-Server kann hier ein entsprechendes Passwort hinterlegt werden.

!dialect
Jede Datenbank unterstützt eine etwas andere Version von SQL. Die Unterschiede betreffen u.a. die Syntax der Spalten z.B. der Datentypen, der verfügbaren SQL-Funktionen usw. Durch den ausgewählten Dialekt vereinheitlicht Hibernate den Zugriff auf diverse Datenbanken.

 hsql       = org.hibernate.dialect.MySQLDialect
 MySQL      = org.hibernate.dialect.HSQLDialect
 PostgreSQL = org.hibernate.dialect.PostgreSQLDialect


      <!-- SQL dialect -->
      <property name="dialect">org.hibernate.dialect.HSQLDialect</property>


!cache.provider_class
Der interne Cache von Hibernate wird ausgeschaltet

      <!-- Disable the second-level cache  -->
      <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>

!show_sql
Durch den Parameter show_sql = TRUE gibt Hibernate alle generierten SQLs auf der Konsole aus.

      <!-- Echo all executed SQL to stdout -->
      <property name="show_sql">true</property>

!hbm2ddl.auto

hbm2ddl.auto = update = erstellt Hibernate die Tabellen automatisch, sofern sie noch nicht existieren.

hbm2ddl.auto = create = LÖSCHT ALLE TABELLEN und erstellt automatisch neue Tabellen.

      <!-- Drop and re-create the database schema on startup -->
      <property name="hbm2ddl.auto">update</property>



!class
Hier werden alle Klassen inkl. Paket aufgezählt. Somit wird eine Verbindung zu Hibernate hergestellt.

(Diese Klasse werden wir später erstellen.)


      <!-- Mappings -->
      <mapping class="de.tth.genre.Genre"/>