Webmaster Forum Logo Part 1 Webmaster Forum Logo Part 2
Webmaster Forum Logo Part 3
     
 
  :: Anmeldung

Benutzername:

Registrierung...

Passwort:

Passwort vergessen?

angemeldet bleiben


  
  :: Umfrage
Welche sozialen Netzwerke benutzt du regelmäßig?

 Facebook
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 73%
 keines
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 22%
 Google+
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 19%
 Twitter
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 11%
 Xing
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 6%
 schülerVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 6%
 meinVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 studiVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 MySpace
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%
 LinkedIn
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%

 ges. 393 Stimmen
 
  :: Buttons

Valid XHTML 1.0 Transitional

nocturne

Kaiser

Dabei seit: 06.01.2005

Beiträge: 1 167

 

1 Zum Seitenanfang

Samstag, 4. April 2009, 13:47

Datenbank -> Hibernate(Java)

Beschreibung
Dieses Tutorial bietet äuserste Automation bei der Integration von Hibernate.
Das Tutorial ist optimiert für einfache aber schnelle Ergebnisse.

Was ist das Ziel?
Ziel ist fachmännisch: Hibernate in eine Java-Applikation zu integrieren.
Ziel ist praktisch: Aus Tabellen Java-Klassen zu generieren und zu füllen.
Ausgehend von Aufgaben von Datenbankdesignern werden einfachste Java-Beans erstellt.

Was ist Hibernate?
Ein Framework zur verbindung der Logik- mit der Datenbankschicht.

Warum Hibernate?
Hibernate ist bekannt und vielseitig.

Was brauche ich?
Ant, Java, hibernate(mglw. bereits mitgebracht in Webservern wie JBoss) und eine Datenbank!

Was brauche ich für dieses Tutorial?
Am besten ein aktuelles Eclipse als IDE, dann natürlich Java (jre, am besten sdk).
In Eclipse ein Projekt (Irgendeins mit Java).
Ein paar Jar-Librarys (von middlegen und hibernate):
hibernate-tools.jar
hibernate3.jar
freemarker.jar
mysql-connector-java-5.1.0-bin.jar
dom4j-1.6.1.jar
commons-logging-1.0.4.jar
middlegen-hibernate-plugin-2.1.jar
middlegen-2.1.jar
log4j-1.2.11.jar
velocity-1.5.jar
commons-collections-3.2.1.jar
commons-lang.jar

Allgemeines:
Bezeichner die mit "hurra" beginnen können beliebig verändert werden.

Schritt1:

Okay, wir arbeiten über Ant weil es einfach schneller geht. Wir brauchen also eine Ant-Datei und erstellen dort ein "target" namens: hurra-target mit den Jar's. Das sollte dann so aussehen:

  Spoiler Spoiler

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?xml version="1.0"?>
<project default="hurra-target" basedir=".">
     	...
	<path id="hurra-jars">

    	<path location="lib/hibernate-tools.jar" />
    	<path location="lib/hibernate3.jar" />
    	<path location="lib/freemarker.jar" />
    	<path location="lib/mysql-connector-java-5.1.0-bin.jar" />
    	<path location="lib/dom4j-1.6.1.jar" />
    	<path location="lib/commons-logging-1.0.4.jar" />
    	<path location="lib/middlegen-hibernate-plugin-2.1.jar" />
    	<path location="lib/middlegen-2.1.jar" />
    	<path location="lib/log4j-1.2.11.jar" />
    	<path location="lib/velocity-1.5.jar" />
    	<path location="lib/commons-collections-3.2.1.jar" />
    	<path location="lib/commons-lang.jar" />

	</path>

	<taskdef name="hurra-hibernate" classname="org.hibernate.tool.ant.HibernateToolTask" classpathref="hurra-jars" />
	<taskdef name="hurra-middlegen" classname="middlegen.MiddlegenTask" classpathref="hurra-jars" />
	<target name="hurra-target">
    	<hurra-middlegen appname="hurra-app" prefsdir="src" gui="false" databaseurl="jdbc:mysql://localhost/hurra-datenbank" driver="org.gjt.mm.mysql.Driver" username="root" password="">
        	<hibernate destination="src" package="org.denkweise.test.hibernate.bean" javaTypeMapper="middlegen.plugins.hibernate.HibernateJavaTypeMapper" />

    	</hurra-middlegen>
    	<hurra-hibernate destdir="src">
        	<configuration configurationfile="src/hibernate.cfg.xml">
            	<fileset dir="src/hurraApp/hurra-bohnen">
                	<include name="*.hbm.xml" />
            	</fileset>
        	</configuration>
        	<hbm2java />
    	</hurra-hibernate>
	</target>
</project>


Schritt 2:
Achtung: Sollten wir jetzt schon die datei mit ant ausführen ("ant build.xml" oder rechtsklick auf build.xml->Run As...->Ant Build) werden zwar die Klassen erstellt und konfiguriert aber wir bekommen die Fehlermeldung dass die hibernate.cfg.xml nicht existiert! Dann sollten Sie Schritt 5 durchführen bevor Wir hier weitermachen. (Es ist zwar nicht Tragisch, aber wir sollten uns bitte an die Reihenfolge halten.)

So, wir brauchen noch eine hibernate-konfiguration, dort übernehmen wir alle angaben zur Datenbank.
Also:

  Spoiler Spoiler

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?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">com.mysql.jdbc.Driver</property>
		<property name="connection.url">jdbc:mysql://localhost/hurra-datenbank</property>
		<property name="connection.username">root</property>
		<property name="connection.password"></property>

		<property name="current_session_context_class">thread</property>
	</session-factory>
	
</hibernate-configuration>

Dann gehen wir zurück zu unserer Ant-Datei (build.xml) und führen sie aus, entweder mit dem Konsolenbefehl ant build.xml oder in Eclipse mit rechtsklick auf build.xml->Run As...->Ant Build. Damit wurden die Klassen erstellt. Bitte führt ein Refresh auf das Projekt aus damit Eclipse die neuen Dateien auch wahrnimmt.



Schritt 3:
Jetzt noch die klassen in der

Quellcode

1
hibernate.cfg.xml
eintragen.
Das geht nach folgendem Schema. (Abhängig von dem relativen Pfad)

Quellcode

1
2
3
4
5
<property name="current_session_context_class">thread</property>

		<mapping resource="/hurra-src/hurra-package/.hbm.xml" />
	                  	 ...
	</session-factory>


Alles geschafft! Wunderbar!

Schritt 4:
Hibernate verwenden. Das geht recht einfach. Eigentlich ist es schon möglich auf die Datenbank zuzugreifen mit:

Quellcode

1
2
3
4
5
6
Session session = new Configuration().configure().buildSessionFactory().getCurrentSession();
		session.beginTransaction();
		
		session.save(new Hurra-Klasse());
		
		session.getTransaction().commit();

Es wird dingend empfohlen die Sessionfactory als Feld auszulagern, im wesentlichen wegen der performance.

Schritt 5:
Sollte sich die Datenbank verändern müssen wir natürlich die Beans mit ihrer Konfiguration aktualisieren.
Dafür löschen wir einfach die Mappings in der hibernate.cfg.xml und die Klassen und Konfigurationen der Beans die letztemal erstellt wurden.


Das war's schon. Weitergehendes in den Weiten des Internets.
 

Ähnliche Themen