Tutorial: Hibernate mit MySQL (erste Schritte)

Status
Nicht offen für weitere Antworten.

neurox

Aktives Mitglied
Hallo allerseits,

ich habe ein Einsteigertutorial für all diejenigen geschrieben, die noch nie mit Hibernate in Berührung gekommen sind, aber nun endlich mal reinschnuppern möchten.

Als ich selber damit angefangen habe, bin ich immer wieder über die etwas lückenhafte Beschreibung, auch hinsichtlich der benötigten JAR-Files, in manchen Tutorials gestolpert. Andere waren dann wiederum zu umfangreich und haben Themen mit eingebracht, die mit meinem Kernproblem nichts zu tun haben.

Wer also Interesse hat, ist herzlich eingelanden mal einen Blick auf das Tutorial unter blog.buhbuhbuh.de zu werfen.

Für Anregung und Kritik bin ich selbstverständlich immer Dankbar.

Viele Grüße
neurox
 

NatGro

Mitglied
Hallo Neurox,

ich würde mich gern mit Hilfe Deines Tutorials in Hibernate einarbeiten.

Ich besitze bisher nur Grundlagenwissen in Java.
Eclipse habe ich mir bereits installier und es läuft auch soweit.
(Die "Hello Word!" Ausgabe erscheint auf meiner Console)! :)

Mit dem Tutorial auf http://docs.jboss.org komme ich ehrlich gesagt nicht so zurecht und ich hoffe Du kannst mir vielleicht weiterhelfen?

Du schreibst:
javatcq4.png


Woher hole ich mir diese?
Muss ich die einzeln zusammengooglen oder gibt es die als Paket irgendwo?
 

neurox

Aktives Mitglied
Muss ich die einzeln zusammengooglen oder gibt es die als Paket irgendwo?

Die wirst Du Dir leider zusammensuchen müssen. Ich hatte mir schon überlegt, diese auf meinem Server zum Download bereit zu stellen. Allerdings hatte ich dann doch die Sorge, dass ich damit gegen irgendwelche Lizenzbedingungen verstoße. Das ist auch der Grund, weshalb es die nicht im Bundle gibt.

Für die meisten Anfänger ist es schon ein Problem überhaupt mal eine Liste zu finden, in denen die ganzen benötigten JARs aufgeführt sind, deshalb denke ich mal, dass Du schon einen ganzen Schritt weiter sein wirst, Du Dir die Files von der Liste einfach mal zusammen suchst.

Vielleicht kannst Du für die Nachwelt ja auch mal eine Liste mit Deeplinks erstellen. Wenn Du sie mir schickst, dann werde ich sie gerne verlinken.

Grüße
neurox
 

NatGro

Mitglied
Du schreibst: Beschafft euch diese bitte und legt sie in den Klassenpfad der Anwendung.

Kannst du mir sagen, wo ich diese unter Eclipse dann hinlegen muss?
In den Ordner in dem sich meine eigene Main-Klasse befindet?

Edit:
Würde es so genügen:
"Project->Properties->Java Build Path->Libaries->Add External jars" ?


Vielleicht kannst Du für die Nachwelt ja auch mal eine Liste mit Deeplinks erstellen. Wenn Du sie mir schickst, dann werde ich sie gerne verlinken.

Hier schonmal die ersten die ich bisher finden konnte:
http://mirrors.ibiblio.org/pub/mirrors/maven/antlr/jars/antlr-2.7.6.jar
http://mirrors.ibiblio.org/pub/mirr...llections/3.2.1/commons-collections-3.2.1.jar
Download dom4j: flexible XML framework for Java from SourceForge.net
http://www.java2s.com/Code/JarDownload/hibernate3.jar.zip
http://www.java2s.com/Code/JarDownload/hibernate-core.jar.zip
 
Zuletzt bearbeitet:
M

maki

Gast
Was mich ein wenig wundert:

Müsste es nicht viele der benötigten Pakete bei http://www.hibernate.org in der Download-Sektion geben?
Nein, geht aus Lizenzrechtlichen Gründen nicht.
Was mich wundert ist dass ich nirgendwo die Dependencies finden kann, ausser in den Maven poms ;)
Für Hibernate ist Maven2 eine riesen Erleichterung.

EclipseLink ist imho viel einfacher von Änfängern zu verwenden als Hibernate.
 
M

maki

Gast
Dependencies = Abhängigkeiten, die JArs inkl. Version von dem Hibernate abhängi ist.

Normalerweise findest man bei Projekten eine Liste mit den Depdencies, konnte keine für Hibernate finden, nur in den Maven poms.
 

NatGro

Mitglied
Ich frage mich auch, wenn ich jetzt einfach nach den diversen JARs google und diese herunterlade,
könnten die dann nicht auch eventuell auch in der falschen Version vorliegen?

Oder ist es sogar das, was Du meinst?
 
M

maki

Gast
Natürlich brauchst du die Jars in der richtigen Version... [c]mvnrepository.com[/c] kann helfen.
 

NatGro

Mitglied
@maki:
Wo "Du gerade hier bist":

Ist das ok, wenn ich die Links zu den einzelnen JAR-Files hier poste oder verstösst das gegen die Boardregeln?
 
M

maki

Gast
Die links ohne Versionsnummer würde ich sofort rausschmeissen, viel zu mehrdeutig.
Du kannst alle Hibernate Dependencies aus Maven Repos ziehen (wie zB. [c]http://mirrors.ibiblio.org/[/c]), ist sicherer, langfristig zuverlässiger und auf jedenfall ist dann die Version eindeutig.
 

ARadauer

Top Contributor
@neurox: Da hast du dir was angefangen... ;-)

Ich bin der Meinung in so einen Thread sollten nur Fragen die das Thema des Tutorials betreffen. Wie man jars findet und wie man sie in Eclipse einbindet, das kann man auch im Anfängerforum posten. ;-)
 

mvitz

Top Contributor
Wenn das ganze ein eclipse projekt ist einfach in einen beliebigen Src Ordner deiner Wahl (idr. src)
 

NatGro

Mitglied
attachment.php


So sieht das jetzt bei mir aus.
Ist das soweit in Ordnung?

Code:
public enum Land { DEUTSCHLAND {
-AT-Override
public String toString() {
return "Deutschland";
} 
}, ÖSTERREICH{
-AT-Override
public String toString() {
return "Österreich";
}
in Deinem Tutorial habe ich durch
Code:
public enum Land { DEUTSCHLAND {
@Override
public String toString() {
return "Deutschland";
} 
}, ÖSTERREICH{
@Override
public String toString() {
return "Österreich";
}
ersetzt. Nun habe ich keine Fehlermeldungen mehr. Oder musste dort extra -AT- stehen?
 

Anhänge

  • java0dlf.png
    java0dlf.png
    18,5 KB · Aufrufe: 82
Zuletzt bearbeitet von einem Moderator:

neurox

Aktives Mitglied
So sieht das jetzt bei mir aus.
Ist das soweit in Ordnung?
ersetzt. Nun habe ich keine Fehlermeldungen mehr. Oder musste dort extra -AT- stehen?

Hallo NatGro, der Fehler ist mir gar nicht aufgefallen. Ja, mit dem @ ist das natürlich richtig. Mir hat da wohl die Blogsoftware einen Streich gespielt und das @ für den Teil einer Email-Adresse gehalten und maskiert.

Werde das sofort korrigieren.

Grüße
neurox
 
Zuletzt bearbeitet:

neurox

Aktives Mitglied
Die links ohne Versionsnummer würde ich sofort rausschmeissen, viel zu mehrdeutig.
Du kannst alle Hibernate Dependencies aus Maven Repos ziehen (wie zB. [c]http://mirrors.ibiblio.org/[/c]), ist sicherer, langfristig zuverlässiger und auf jedenfall ist dann die Version eindeutig.

Ich glaube dazu sollte man auch mal ein eigenes Tutorial schreiben. Viele Anfänger wissen ja gar nicht, was Maven macht. Ich werde mir das jedenfalls mal auf meine ToDo-Liste setzen und eins schreiben, sobald ich wieder Zeit habe.
 

NatGro

Mitglied
Das wäre super, ich habe bisher auch leider noch nicht die Zeit gefunden mich eingehend mit Hibernate auseinander zu setzen, daher wäre ein detaillierteres Tutorial natürlich Gold wert.
 
M

maki

Gast
neurox sprach von einem Tutorial für Maven2, imho gibt es da mehr als genug, dasselbe gilt imho auch für Hibernate :)
Aber jedem das seine...
 

neurox

Aktives Mitglied
neurox sprach von einem Tutorial für Maven2, imho gibt es da mehr als genug, dasselbe gilt imho auch für Hibernate :)
Aber jedem das seine...

Ja, ich hatte mich auf Maven2 bezogen. Was es da an Tutorials gibt, hab ich mir noch nicht angeschaut. Im Bereich Hibernate gibt es einiges. Aber alle sind Lückenhaft, was es für Anfänger recht schwer macht. Besonders die hier besprochenden Dependencies sind ein Problem, das in den Tutorials meinst doch recht stiefmütterlich behandelt wird.

Daher denke ich schon, das mein Tutorial zu Hibernate eine gewisse Daseinsberechtigung hat.

Aber keine Sorge, ich bin auch nicht beleidigt wenn da jemand anderer Meinung ist ;-)
 

EarthDragon

Mitglied
hmm ich hab bei dem tutorial nen problem ich weis aber nich wo es liegt
ich hab eine klasse "Test" und die hat nur 2 felder ne id und nen test string
wenn ich den von dem "ersten versuch" probiere das in die datenbank einzutragen macht er auch alles soweit wies soll in der datenbank wird auch der identifier hochgezählt(der nächste identifier is wieder eins höher) aber der datensatz erscheint nicht in der datenbank


hier die test.hbm.xml datei:

[xml]<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping>
<class name="test.Test">
<id name="id">
<generator class="native" />
</id>
<property name="test" />
</class>
</hibernate-mapping>[/xml]

hier auschnitt von dem (denk ich) relevanten teil der consolen ausgabe

Code:
table found: hibernateTestDb.Test
columns: [id, test]
foreign keys: []
indexes: [primary]
Setting dialect [org.hibernate.dialect.MySQLInnoDBDialect]
Setting dialect [org.hibernate.dialect.MySQLInnoDBDialect]
schema update complete
Checking 0 named HQL queries
Checking 0 named SQL queries
opened session at timestamp: 12728213864
Erstelle neuen Eintrag ...
executing identity-insert immediately
about to open PreparedStatement (open PreparedStatements: 0, globally: 0)
opening JDBC connection
insert into Test (test) values (?)
Hibernate: insert into Test (test) values (?)
Natively generated identity: 7
about to close PreparedStatement (open PreparedStatements: 1, globally: 1)
processing flush-time cascades
dirty checking collections
Flushed: 0 insertions, 0 updates, 0 deletions to 1 objects
Flushed: 0 (re)creations, 0 updates, 0 removals to 0 collections
listing entities:
test.Test{id=7, test=hi}
releasing JDBC connection [ (open PreparedStatements: 0, globally: 0) (open ResultSets: 0, globally: 0)]
aggressively releasing JDBC connection

und die ErsterVersuch.java
[Java]import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

import test.Test;

public class ErsterVersuch {

public static void main(String[] args) {
Session session = null;
try {
// Datenbankverbindung konfigurieren (hibernate.cfg.xml wird eingelesen)
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
session = sessionFactory.openSession();

System.out.println("Erstelle neuen Eintrag ...");

// Objekt instanzieren und mit Werten befüllen
Test t1 = new Test();
t1.setTest("hi");
// das Objekt in der Datenbank ablegen
session.save(t1);
} catch (Exception e) {
e.printStackTrace();
} finally {
session.flush();

session.close();
}
}
}[/Java]
 

neurox

Aktives Mitglied
Also wenn man nach das Ausgabe Deiner Console geht, wurde die Id auf 7 hochgezählt.

Wie schaust Du denn in die Datenbank? phpmyadmin? Vielleicht liegt da irgendwo der Fehler. Vieleicht siehst Du die Änderungen einfach nur nicht.

Prüf' das bitte noch mal.

Grüße
neurox
 

EarthDragon

Mitglied
bis auf "Nächste Autoindex 8" weist nichts darauf hin das da überhaupt was passiert ist :(
ich hab auch schon mit dem auslesen per java getestet da hatte ich auch keine datensätze
ich hab ja auch die vermutung das es an der db liegt aber ich wüste nich wo
der db user hat alle rechte auf der datenbank und darf von überall zugreifen
...
wenns dir bei der lösung des problems helfen würde würd ich dir mal die daten geben denn köntest du mal reinschauen oder mal von dir aus ne testaplikation testen
 
Zuletzt bearbeitet:

Yzebär

Bekanntes Mitglied
Sieht so als würde ein Commit auf die Transaktion fehlen. Probier doch mal dasselbe mit eigenem Commit:
Java:
 Session sess = factory.openSession();
 Transaction tx;
 try {
     tx = sess.beginTransaction();
     //do some work
     ...
     tx.commit();
 }
 catch (Exception e) {
     if (tx!=null) tx.rollback();
     throw e;
 }
 finally {
     sess.close();
 }
 

neurox

Aktives Mitglied
wenns dir bei der lösung des problems helfen würde würd ich dir mal die daten geben denn köntest du mal reinschauen oder mal von dir aus ne testaplikation testen

Ja, schick einfach mal das Projekt, dann werde ich sicherlich sehen, woran es liegt.

An einem fehlenden Commit, wie Yzebär vermuttet kann es nicht liegen, da wir hier gar keine Transaktion verwenden.
 

timbeau

Gesperrter Benutzer
Es ist zwar schon älter aber gerade interessant für mich. Die fehlenden Einträge liegen einfach an den fehlenden einträgen in der Mapping-XML Datei. Dort muss statt z.B.

[XML]<property name="anrede" />[/XML]

folgendes stehen:

[XML]<property name="vorname" type="java.lang.String">
<column name="VORNAME" />
</property>[/XML]

was dazu führt, das hier überhaupt gemapped wird.

Passend hierzu gibts auch ein Hibernate-Plugin von JBoss glaube ich. Aber es gibt ja noch die Möglichkeit von Annotations.
 

neurox

Aktives Mitglied
Passend hierzu gibts auch ein Hibernate-Plugin von JBoss glaube ich. Aber es gibt ja noch die Möglichkeit von Annotations.

Ich muss gestehen, dass ich selber eigentlich nur noch mit Annotationen arbeite. Das geht wesentlich schneller uns ist meines Erachtens leichter zu warten, weil man das Mapping und die Bean in einer Datei hat. Das Tutorial habe ich mit XML geschrieben, weil es für das Verständnis leichter ist.

Das Hibernate-Plugin hat mir irgendwie nie viel gebracht.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Kennt jemand das Java WebService Tutorial der Uni Hannover? Allgemeine Java-Themen 2
S Webservice-Tutorial Allgemeine Java-Themen 3
P Memory Editing mit JNA, tutorial? Allgemeine Java-Themen 3
N OpenGL tutorial Allgemeine Java-Themen 4
M Sun Tutorial Frage (MVC) Allgemeine Java-Themen 4
6 Java - Threads - parallele Programmierung - Tutorial Allgemeine Java-Themen 6
O SVG Tutorial Allgemeine Java-Themen 2
G bookstore JavaEE Tutorial Allgemeine Java-Themen 2
G ANT Tutorial . Schritte bzgl. Junit Bibliothek Allgemeine Java-Themen 4
loadbrain Tutorial zur Kompilierung Allgemeine Java-Themen 4
F Gutes Threads Tutorial hier aber trotzdem eine Frage Allgemeine Java-Themen 7
lhein Tutorial zu Observer / Observable? Allgemeine Java-Themen 6
P Suche String Tutorial zu Suche&Ersetze Funktion von text Allgemeine Java-Themen 35
M Tutorial zu Neuronen in Java? Allgemeine Java-Themen 5
S Suche Java Fortgeschrittenen-Tutorial Allgemeine Java-Themen 9
V Suche einfaches JasperReports Tutorial Allgemeine Java-Themen 23
I Hibernate Envers - Aufruf der Methode zum Speichern selbst ausführen oder managen? Allgemeine Java-Themen 0
S org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: right near Allgemeine Java-Themen 6
P Hibernate Proxy Allgemeine Java-Themen 1
C Hibernate EJB JTA Allgemeine Java-Themen 4
M JAXB Reimport zu Hibernate DB -> Exception Allgemeine Java-Themen 3
Shoox Hibernate / JAXB für Schnittstellen Allgemeine Java-Themen 4
Jay_030 Guice + Hibernate = Probleme? Allgemeine Java-Themen 2
G Hibernate search (Lucene) - Index wird nicht rechtzeitig erzeugt? Allgemeine Java-Themen 2
H Hibernate: @OneToOne Beziehung Allgemeine Java-Themen 4
N Hibernate und Fehlermeldung Allgemeine Java-Themen 18
P Hibernate oder Java Persistence API? Allgemeine Java-Themen 3
A Spring und Hibernate Allgemeine Java-Themen 2
MQue log4j mit hibernate Allgemeine Java-Themen 3
F Hibernate speichern - Null Allgemeine Java-Themen 5
T Wie Hibernate im Tomcat installieren? Allgemeine Java-Themen 2
M Hibernate frage zur Verbindung Allgemeine Java-Themen 3
G Hibernate, JTable und Performance Allgemeine Java-Themen 17
G Obfuscator und Hibernate! Allgemeine Java-Themen 5
W JBoss,Axis2,Hibernate/JPA,Oracle - EntityManager Problem Allgemeine Java-Themen 4
T Hibernate Criteria Queries - Abfragen von Collection-Members Allgemeine Java-Themen 2
J Hibernate & Java Allgemeine Java-Themen 4
A Hibernate und Swing Allgemeine Java-Themen 2
G Hibernate speichert Daten nur während Session in HSQL-DB Allgemeine Java-Themen 10
N MySQL mit Strings Allgemeine Java-Themen 3
B Schnittstelle zwischen MySQL und Apache Allgemeine Java-Themen 8
C MySQL Tabellen sortieren. Allgemeine Java-Themen 33
O Zugriff auf mySQL ohne JDBC Allgemeine Java-Themen 3
V Maven Maven ClassNotFoundException MySQL JDBC Treiber Allgemeine Java-Themen 1
G Eclipse Java findet MySQL Driver nach export nicht mehr Allgemeine Java-Themen 2
R Praktikums Projekt Java vs MySQL Allgemeine Java-Themen 91
C JPA und mysql Allgemeine Java-Themen 3
D falsche Zeile aus JTable in MySQL gelöscht Allgemeine Java-Themen 6
D Daten in MySQL-Datenbank schreiben Allgemeine Java-Themen 13
J javaFX mySQL Allgemeine Java-Themen 3
B MySQL Eintrag erstellen Allgemeine Java-Themen 3
P MYSQL Datenbank Dump einspielen Allgemeine Java-Themen 1
F eclipse, texlipse, R und mysql Allgemeine Java-Themen 2
S WebApp MySQL Connection Loss Allgemeine Java-Themen 10
H Tablemodel und mysql Allgemeine Java-Themen 8
T Datumsformat für MySQL Allgemeine Java-Themen 4
S ANT mysql treiber einbinden Allgemeine Java-Themen 4
F Ärger mit mySQL Allgemeine Java-Themen 3
S Java Methode um Daten aus MySQL auslesen Allgemeine Java-Themen 11
S Excel in mySQL importieren Allgemeine Java-Themen 3
M JAVA Timestamp aus Mysql Allgemeine Java-Themen 4
T MySQl Datenbank als Array ausgeben Allgemeine Java-Themen 11
hdi Applet, JavaScript, PHP, mySQL -> Was brauch ich? Allgemeine Java-Themen 3
E MySQL-Datenbank <-> HashMap/TreeMap Allgemeine Java-Themen 1
H Daten aus MySQL datenbank auslesen und in ArrayList stecken Allgemeine Java-Themen 8
G mySQL und JTable Allgemeine Java-Themen 7
G MySql+Java+backup Allgemeine Java-Themen 23
I JAVA+ MySQL locales statement? Allgemeine Java-Themen 2
B Importieren in MySQL mit Java-Programm Allgemeine Java-Themen 15
G mysql datum umwandeln mittels jsp Allgemeine Java-Themen 10
G Mysql --> Datumsformat Allgemeine Java-Themen 7
C Umlaute mysql Allgemeine Java-Themen 3
V MySql db unter Java zum laufen bringen. Allgemeine Java-Themen 2
C Rechte unter WinXP, MySQL-Server per Runtime herunterfahren? Allgemeine Java-Themen 6
G Datum in MySQL Timestamp umwandeln? Allgemeine Java-Themen 10
G Daten aus MySQL-Datenbank an JFreeChart übergeben Allgemeine Java-Themen 3
G MySQL-Problem (LOAD DATA INFILE) Allgemeine Java-Themen 5
F Threadsicherheit von MySQL-Verbindungen Allgemeine Java-Themen 8

Ähnliche Java Themen

Neue Themen


Oben