# persistence.xml oder hibernate.cfg.xml ?



## Kris (4. Jun 2008)

Hallo!!

hab ein riesen Problem. Die Verbindung aus den Beispielen ohne Annotationen habe ich ummodulieren önen, so dass mein Programm funktioniert hat. Nun habe ich das Buch Java Persistence API mit Hibernate gelesen und habe eine persistence.xml im META-INF Verzeichnis erstellt. Leider funkionier es nicht. Ich weiss nicht wo der Fehler liegt und komme seit Tagen nicht mehr weiter. Gibt es irgendwo eine Schritt für Schritt anweisung, in der gesagt wird, was wichtig ist um eine Verbindung zwischen Programm und Datenbank zu erstellen?


----------



## KSG9|sebastian (5. Jun 2008)

es gibt Hibernate und es gibt JPA mit Hibernate.

Für hibernate wird die hibernate.cfg.xml benötigt, für JPA die persistence.xml


----------



## Kris (5. Jun 2008)

Ich möchte halt jpa mit hibernate benutzen. Leider funktioniert das nicht. Ich habe die persitence.xml im META-INF Verzeichnis.


```
<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="test" transaction-type="JTA"> 
    <class>Person</class> 
    <exclude-unlisted-classes>true</exclude-unlisted-classes> 
    <properties> 
      <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" /> 
      <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/hibernate" /> 
      <property name="hibernate.connection.username" value="root" /> 
      <property name="hibernate.connection.password" value="router" /> 
      <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLInnoDBDialect" /> 
    </properties> 
  </persistence-unit> 
</persistence>
```

Doch die Fehlermeldung

Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named test
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:55) 
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:33) 


erscheint bei der Codezeile


```
EntityManagerFactory emf = Persistence.createEntityManagerFactory("test");
```


----------



## Kris (5. Jun 2008)

Braucht man eine build.xml bei JPA?


----------



## semi (5. Jun 2008)

In der Fehlermeldung steht doch, dass kein PersistenceProvider definiert ist. Einfach HibernatePersistence verwenden.
	
	
	
	





```
...
<persistence-unit name="test" transaction-type="JTA"> 
  <provider>org.hibernate.ejb.HibernatePersistence</provider>
...
```
Die Datei build.xml wird von JPA nicht benötigt. Was auch immer diese Datei bei dir enthält, I.d.R. lässt man sich 
über Ant-Scripte das Datenbankschema oder Dokumentation generieren.


----------



## Kris (5. Jun 2008)

Wenn ich den Provider einfüge, dann steht in Eclipse:

cvc-complex-type.2.4.a: Invalid content was found starting with element 'provider'. One of 
 '{"http://java.sun.com/xml/ns/persistence"roperties}' is expected.


----------



## semi (5. Jun 2008)

Zeig mal, wie das ganze aussieht.


----------



## Kris (7. Jun 2008)

```
<?xml version="1.0" encoding="UTF-8"?>
<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="test" transaction-type="JTA">
    <class>Person</class>
    <exclude-unlisted-classes>true</exclude-unlisted-classes>
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <properties>
      <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
      <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/hibernate"/>
      <property name="hibernate.connection.username" value="root"/>
      <property name="hibernate.connection.password" value="router"/>
      <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLInnoDBDialect"/>
      <property name="hibernate.show_sql" value="true"/>
    </properties>
  </persistence-unit>
</persistence>
```


----------



## semi (8. Jun 2008)

Sieht OK aus, nur die Reihenfolge der Einträge stimmt nicht. Ärgerlich, was?  :lol: 
Provider sollte vor den anderen zwei stehen.
	
	
	
	





```
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>Person</class> 
<exclude-unlisted-classes>true</exclude-unlisted-classes> 
... usw.
```
Schau dir dazu auch persistence_1_0.xsd an.


----------



## Kris (8. Jun 2008)

Oh man. 
Danke.
Wo finde ich diese xsd datei?


----------



## semi (8. Jun 2008)

Steht ja im Header der XML Datei.  :wink: 
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd


----------

