[Anfänger] Hibernate-Einstieg

Status
Nicht offen für weitere Antworten.

Mean

Aktives Mitglied
Hallo,

ich habe ein kleines Projekt das ich an der Uni machen muß und soll dafür Hibernate verwenden.

Ich habe allerdings nicht so die riesen Ahnung. Postgres habe ich installiert.

Meine Ordner-Struktur in Eclipse sieht so aus:

unihb
- src
-- de.kundenverwaltung.db
-- de.bestellverwaltung.db
- JRE System Librarie
- classes
- lib
build.xml

Wenn ich das jetzt richtig verstanden habe brauche ich nun ja die persistence.xml um die Verbindung zur DB aufzubauen. Wo muß diese denn genau liegen in meinem Fall? Gibt es eine andere Möglichkeit zu testen, ob eine Verbindung zur DB aufgebaut ist, außer eine Entity fertig zu programmieren (das will ich machen, sobald ich mir sicher bin, daß die Grundlagen stimmen und ich mir dann keinen Wolf suche und am Ende liegt es an der persistence.xml).

Danke und Grüße,

Dirk
 

L-ectron-X

Gesperrter Benutzer
Neben den Klassen/Entitis, die du mappen willst machst du deine Datenbank in der hibernate.cfg.xml bekannt.
Für PostgreSQL könnte die so aussehen:
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="connection.url">jdbc:postgresql://192.168.0.100/PostgreDB</property>
	<property name="connection.username">postgres</property>
        <property name="connection.password">postgres</property>
	<property name="connection.driver_class">org.postgresql.Driver</property> 
        <property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property>        

        
        <property name="connection.pool_size">1</property>

        
        <property name="current_session_context_class">thread</property>

        
        <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>

        
        <property name="show_sql">true</property>

        
         

        <mapping resource="Kunden.hbm.xml"/>
        <mapping resource="Bestellung.hbm.xml"/>

    </session-factory>

</hibernate-configuration>

Wenn die Verbindung dorthin nicht klappt, bekommst du Fehlermeldungen.
 

Mean

Aktives Mitglied
Hallo,

vielen Dank für eure Antworten!

Ich habe jetzt ein Beispiel unseres Profs gefunden. Da ist das so weit mit der persistence.xml strukturiert,...

Ich hätte jetzt aber noch eine andere Frage: Ich habe jetzt eine Beispiel Entity erstellt @Entity @Tabel(name="kunde"),... und würde nun gerne testen, ob ich die über die Datenbank befüllen kann.

Wo kann ich denn einen Query eingeben, daß nur damit eine Instanz von Kunde angelegt und gefüllt wird? Ich will jetzt nicht in main ein neues Objekt anlegen, da ich später ja auch andere Entities habe und das dann jedes Mal so zu testen wäre wohl etwas sehr umständlich?!?!

Gibt es da eine Möglichkeit?

Danke und Grüße,

Dirk
 

semi

Top Contributor
Installiere die Hibernate-Tools. Gehe dazu in den Update-Manager von Eclipse und
trage dort die folgende Seite ein

Name: Hibernate-Tools
URL: http://download.jboss.org/jbosside/updates/development

Von dem ganzen brauchst du nur die Hibernate-Tools, den Rest kannst du ignorieren.
hibernatetoolsxe2.png


Öffne dann nach der Installation die Hibernate-Perspektive (Window->Open Perspective->...)
und erstelle eine Konfiguration für dein Projekt. (evtl. noch unter Classpath einen passenden
JDBC Treiber eintragen)
Unter Persistence Unit musst du eine PU aus deiner persistence.xml eintragen. Rest sollte klar sein.
hibernateconfigmi9.png


Danach klappst du das ganze auf und öffnest einen HQL-Editor. Dort kannst du mit verschiedenen
Queries experimentieren.

Du kannst (solltest du auch) JUnit-Tests schreiben, über die du dann die Entities testen kannst.
Wenn du am Ende der Tests Rollback machst, bleibt deine DB unverändert.
 

Mean

Aktives Mitglied
Hi semi,

vielen Dank für die ausführliche Beschreibung.

Im Moment habe ich noch das Problem, daß ich den Fehler bekomme "Could not load JPA configuration".

Und beim Registerreiter "Hibernate Dynamic SQL Preview" kommt "No HQL Query Editor selected".

Kannst mir da vielleicht helfen?

Vielen Dank und Grüße,

Dirk
 

semi

Top Contributor
Hat dien Projekt eine gültige persistence.xml? Solange Session Factory nicht korrekt initialisiert
wird, ist der HQL Editor nicht verwendbar. Achte darauf, dass du in der Konfiguration den korrekten
Namen bei Persistence Unit einträgst und dass "JPA (jdk1.5+)" selektiert ist.
Das ganze sollte dann direkt funktionieren.

Der zweiten Fehler kommt manchmal auch, wenn man den Cursor noch nicht in den HQL Editor
gesetzt hat bzw. die Konfiguration in der ComboBox nicht ausgewählt ist.

Eigentlich sollte forgendes in persistence.xml ausreichen, um Queries ohne Datenbank zu schreiben
Code:
<persistence-unit name="PostgresPU">
   <provider>org.hibernate.ejb.HibernatePersistence</provider>
   <properties>
      <property name="hibernate.archive.autodetection" value="class" />
      <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
   </properties>
</persistence-unit>
 

Mean

Aktives Mitglied
Hallo semi,

danke erstmal, das mit der persistence-unit hatte ich falsch, habe ich jetzt aber aus der XML gelesen.

So sieht meine persistence.xml aus (sollte eigentlich gehen, da Beispiel vom Prof):

Code:
<?xml version="1.0" encoding="ISO-8859-1"?>





<persistence xmlns="http://java.sun.com/xml/ns/persistence"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
             version="1.0">

	<persistence-unit name="HibernateExample" transaction-type="RESOURCE_LOCAL">
		<provider>org.hibernate.ejb.HibernatePersistence</provider>
		
		<class>proj.hs.kundenverwaltung.db.Kunde</class>
		<class>proj.hs.lieferverwaltung.db.Bestellung</class>
		<class>proj.hs.lieferverwaltung.db.Lieferung</class>
	</persistence-unit>
</persistence>

Kann es vielleicht daran liegen, daß in der persistence.xml Klassen stehen, die ich noch gar nicht habe?

Danke und Grüße,

Dirk
 

semi

Top Contributor
Ja, es fehlt mindestens noch Dialect. Die Entity-Klassen werden automatisch erkannt/gefunden.
Ersetze es am besten durch das hier
Code:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0"
	xmlns="http://java.sun.com/xml/ns/persistence"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
   <persistence-unit name="HibernateExample">
      <provider>org.hibernate.ejb.HibernatePersistence</provider>
      <properties>
         <property name="hibernate.archive.autodetection" value="class" />
         <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
      </properties>
   </persistence-unit>
</persistence>
Man kann jede Klasse einzeln benennen, das ist aber unnötig, wenn man "hibernate.archive.autodetection" verwendet.

PS: oder besser durch das hier (Host, Datenbanknamen, User und Passwort anpassen)
Vergiss nicht den JDBC-Treiber unter Classpath in der Hibernate-Konfiguration einzutragen.
Code:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0"
	xmlns="http://java.sun.com/xml/ns/persistence"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
   <persistence-unit name="HibernateExample">
      <provider>org.hibernate.ejb.HibernatePersistence</provider>
      <properties>
         <property name="hibernate.archive.autodetection" value="class" />
         <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />

         <property name="hibernate.connection.driver_class" value="org.postgresql.Driver" />
         <property name="hibernate.connection.url" value="jdbc:postgresql://localhost/deinedb" />
         <property name="hibernate.connection.username" value="user" />
         <property name="hibernate.connection.password" value="password" />
         <property name="hibernate.connection.pool_size" value="1" />
      </properties>
   </persistence-unit>
</persistence>
 

Mean

Aktives Mitglied
Hallo semi,

danke! Was mir gerade in meinen Unterlagen aufgefallen ist, ich habe Postgres noch gar nicht im Data Source Editor eingestellt. Das wollte ich jetzt machen, allerdings kann er nicht pingen und bringt mir beim Versuch darauf zu connecten folgenden Fehler:

Creating PostgresSQL JDBC Connection Factory connection to postgres
Creating SQL Model connection connection to postgres
Creating connections to postgres

Und zwar heißt mein Datenbankserver postgres und ich habe dann bei der URL jdbc:postgresql:postgres

Stimmt das?

Denke, ich muß erstmal das hinbekommen, ehe ich den HQL verwenden kann?!?!

Danke und GRüße,

Dirk
 

semi

Top Contributor
Mean hat gesagt.:
Denke, ich muß erstmal das hinbekommen, ehe ich den HQL verwenden kann?!?!
Das brauchst du nicht unbedingt. Mit Postgres habe ich noch nie was zu tun gehabt, aber das Format von URL
ist immer wieder gleich/ähnlich, egal was für Server dahinter steckt.
Code:
<protocol>:<subprotocol>:<resource>
Das hier sollte funktionieren, wenn der Server auf gleichem PC läuft (localhost) und deine Datenbank auch
tatsächlich 'postgres' heisst.
Code:
jdbc:postgresql:postgres

Passe einfach die persistence.xml, wie oben beschrieben, an und teste den HQL Editor.
 

Mean

Aktives Mitglied
Danke! Das mit dem Treiber hat nicht funktioniert...

Das mit der persistence.xml leider auch nicht.

Der Postgres-Server läuft definitiv (Prozess postgress.exe). K.A., woran das liegt. Ich denke, da muß ich mal am Di in 1 WOche zu meinem Prof...

Sorry, wenn ich dich jetzt so "abhacke", aber ist für dich auch scheiße irgendwas zu sagen, wenn nichts Vorort daran schauen kannst und ich kenne mich auch zuuu wenig aus...

Ich melde mich nochmal, wenn's geht - so lange schreibe ich die Entities halt mal ins Blaue...

Danke und Grüße,

Dirk
 

Mean

Aktives Mitglied
Hallo,

mein JPA, als auch der HQL-Editor laufen jetzt. Wollte mich nochmals für die zahlreiche Hilfe bedanken!

Meiner Meinung nach ist in semis persistence.xml noch ein Fehler (falls die jemand nutzen will) und zwar fehlt da, wenn ich sie mit meiner abgleiche

Code:
<persistence-unit name="projectPersistence" transaction-type="RESOURCE_LOCAL">

Möglicherweise braucht man das in der Form die semi vorgeschlagen hat aber auch nicht - vielleicht ist's ein Versuch wert, falls es nicht klappt ;)

Danke nochmals und Grüße,

Dirk
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
torresbig MySQL hibernate - could not resolve entity class ... (Datenbank Anfänger) Datenbankprogrammierung 19
E MySQL Hibernate ( Anfänger ) Datenbankprogrammierung 3
N Hibernate-Anfänger Datenbankprogrammierung 14
I Anfänger-Tutorial für Hibernate gesucht Datenbankprogrammierung 3
O PL/SQL Anfänger Datenbankprogrammierung 5
dat_vin Der Anfänger und das AbstractTableModel Datenbankprogrammierung 12
J Anfänger Fragen zu JPA Datenbankprogrammierung 6
S MySQL EclipseLink Anfänger Datenbankprogrammierung 3
D MySql Tabelle mit MySQLAdministrator (Anfänger) Datenbankprogrammierung 5
L DatenBank Anfänger Datenbankprogrammierung 19
H Dateiverwaltung mit mySQL ( mySQL Anfänger ) Datenbankprogrammierung 4
-horn- [Anfänger] Ein einfaches Beispiel für Abfrage von MxSQL? Datenbankprogrammierung 8
E Anfänger: Verbindung zu OracleDB Datenbankprogrammierung 12
S JDBC-Anfänger und Probleme beim Treiberfinden etc. Datenbankprogrammierung 4
G Anfänger: Welche Datenbank ist sinnvoll? Datenbankprogrammierung 11
krgewb Hibernate: Fremdschlüssel wird nicht erzeugt Datenbankprogrammierung 2
I Hibernate Predicate mit IN Clause "Unaware how to convert value to requested type" Datenbankprogrammierung 0
T org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: ..., could not initialize proxy - no Session Datenbankprogrammierung 5
T Realisierungsvorschläge Hibernate SQL Datenbankprogrammierung 1
Zrebna Wie mittels Hibernate eine Join-Tabelle als eigene Java-Klasse erstellen? Datenbankprogrammierung 5
Zrebna Tabellen-Erzeugung via Hibernate ignoriert 'CascadeType' settings Datenbankprogrammierung 1
I Hibernate / JPA - Spaltenname von Query (Select) bekommen Datenbankprogrammierung 6
M Mysql Views und Hibernate Caching Datenbankprogrammierung 4
damike84 Hibernate: persistieren eines Graphen Datenbankprogrammierung 2
N Hibernate Entitäten bei Selects aus 2 Tabellen Datenbankprogrammierung 7
OnDemand Hibernate Realationen Datenbankprogrammierung 7
OnDemand Hibernate ManyToOne Datenbankprogrammierung 5
D Hibernate oneToMany Syntaxfehler Datenbankprogrammierung 3
D Hibernate Error: NoSuchMethodError Datenbankprogrammierung 4
D hibernate mit postgreSQL Datenbankprogrammierung 3
S MySQL Hibernate: Fehler bei Verwendung von 2 unterschiedlichen Enumration Datenbankprogrammierung 3
F Problem mit Hibernate c3p0 Datenbankprogrammierung 2
OnDemand MySQL Trigger löst nicht aus bei Hibernate Update Datenbankprogrammierung 12
OnDemand Hibernate OneToMany ManyToOne Datenbankprogrammierung 61
J Hibernate One-To-One mit Where Klausel Datenbankprogrammierung 6
L hibernate.cfg.xml Could not parse configuration Datenbankprogrammierung 0
L H2 Hibernate definieren? Datenbankprogrammierung 1
T JPA Mapping Enum (hibernate 5) Datenbankprogrammierung 1
H In hibernate.cfg.xml schreiben und auslesen Datenbankprogrammierung 0
K Hibernate: Ein Fluch Datenbankprogrammierung 3
K Java Object mit Hibernate in MySQL abspeichern Datenbankprogrammierung 1
K Eclipse: JBoss Hibernate Tool: Kein Zugriff auf Datenbank Datenbankprogrammierung 5
S JpaRepositories & Hibernate: ungewolltes trim() in findBy Datenbankprogrammierung 7
S MySQL hibernate exception: illegal state exception : entityManagerFactory is closed Datenbankprogrammierung 5
S Hibernate: Verschiedene Klassen zurückgeben. Datenbankprogrammierung 2
looparda Architektur für JPA Hibernate Umstieg Datenbankprogrammierung 14
O HSQLDB Hibernate Criteria Problem Datenbankprogrammierung 3
perlenfischer1984 Hibernate mit final members Datenbankprogrammierung 3
perlenfischer1984 Java Objecte speichern mit Hibernate ? Datenbankprogrammierung 2
N SQLite Hibernate und Aufruf von Funktion SELECT last_insert_rowid() Datenbankprogrammierung 2
N Sqlite3 und Hibernate Datenbankprogrammierung 3
A Hibernate Cache leeren Datenbankprogrammierung 4
I MySQL Hibernate zu viele Queries Datenbankprogrammierung 2
Psypsy Hibernate / JPA erkennen von schon gespeicherten Objekten Datenbankprogrammierung 4
Psypsy Hibernate / JPA OneToOne MappedBy Frage Datenbankprogrammierung 2
J Hibernate + DTOs - DTOs in DAOs verwenden? Datenbankprogrammierung 1
S Hibernate-Konfiguration : Unverständliche Ausgabe beim Ausführen Datenbankprogrammierung 0
I MySQL Hibernate / MySQL alias in WHERE clause Datenbankprogrammierung 1
J Hibernate + HSQL embedded Datenbankprogrammierung 2
P Hibernate Einstieg Datenbankprogrammierung 5
C Hibernate und createQuery Datenbankprogrammierung 2
V kennt jemand empfehlenswerte online tutorials zur Hibernate ? gerne auch englisch. Datenbankprogrammierung 4
G H2 Hibernate - wie joins machen Datenbankprogrammierung 1
D Hibernate: Zustand eines Objekts erkennen? Datenbankprogrammierung 0
D Unterschiede Hibernate Vs. Java Persistence API Datenbankprogrammierung 8
I Hibernate / JPA Index hinzufügen Datenbankprogrammierung 1
X Hibernate Cache Verständnisproblem Datenbankprogrammierung 0
T Hibernate und inner class Datenbankprogrammierung 0
K n:m Tabellen mit Hibernate erstellen Datenbankprogrammierung 1
T Hibernate DAO gute Tutorials/Bücher gesucht Datenbankprogrammierung 0
C Hibernate: could not resolve property Datenbankprogrammierung 1
J Plug-In-Framework für Hibernate-Klassen Datenbankprogrammierung 0
M Hibernate - Save Child wenn nötig Datenbankprogrammierung 10
M DAO's + Hibernate Theorie Datenbankprogrammierung 4
T Hibernate, HSQLDB und UNIQUE Datenbankprogrammierung 2
F Hibernate - verschiedene Schemen Datenbankprogrammierung 7
D Hibernate SaveOrUpdate Exception Datenbankprogrammierung 2
D Hibernate CreateQuery ohne Result Datenbankprogrammierung 7
E MySQL Hibernate mit JaxWS führt zu LazyInitialization Exception Datenbankprogrammierung 8
L Einarbeitung in Hibernate -> wenn gute SQL Kenntnisse vorhanden? Datenbankprogrammierung 2
B DB2 Hibernate findet Datenbank nicht Datenbankprogrammierung 18
K JPA / Hibernate Annotations Datenbankprogrammierung 4
M JPA / Hibernate mit Postgres DB Datenbankprogrammierung 3
P JSF + H2 + TomEE + Hibernate/JPA Datenbank wird nicht angelegt Datenbankprogrammierung 3
P Lazy-Fetchig und Session-Problem mit Hibernate Datenbankprogrammierung 4
J Hibernate Select auf Parameterliste Datenbankprogrammierung 3
C Hibernate ManyToMany zusammengesetzter Primärschlüssel, problem. Datenbankprogrammierung 3
P Oracle Hibernate - Oracle-VarChar-Index wird nicht genutzt Datenbankprogrammierung 3
M Hibernate Foreign Key definieren Datenbankprogrammierung 4
M Abstrakte Klassen Hibernate Datenbankprogrammierung 4
D Mit Hibernate (mit Annotation) auf Views zugreifen Datenbankprogrammierung 2
M [Hibernate]Abgleich eines lokalen Objekts mit dem Zustand aus der Datenbank. Datenbankprogrammierung 3
P Mit Hibernate mehrere Datensätze löschen Datenbankprogrammierung 7
P Probleme mit meinem 1. Hibernate Beispiel Datenbankprogrammierung 3
P erste Schritte mit Hibernate Datenbankprogrammierung 3
V Hibernate Interfaces von anderem Projekt Datenbankprogrammierung 2
J MySQL Datenbank konfigurieren, JDBC, MySQL oder Hibernate Datenbankprogrammierung 2
B Hibernate und portierbare Datenbank Datenbankprogrammierung 3
qwerqer [Hibernate] Mappingvarianten Datenbankprogrammierung 2
lumo Teneo Hibernate & JPA Datenbankprogrammierung 15

Ähnliche Java Themen


Oben