Persistence mit JPA

In meinem Beitrag geht es um die Datenbankverbindung zu Oracle bei Web Projekten mit JPA 2, EJB3, Hibernate und JBoss6.
Ohne XML-Konfigurationen kommt man bei JPA nicht aus. Hierbei ist die persistence.xml die zentrale Konfigurationsdatei, die angepasst werden muss. In ihr wird die Persistence-Unit, eine Gruppierung von Entities, definiert.

<persistence-unit name="Namen des Projekts" transaction-type="JTA">

Der Name der Persistence Unit leitet sich aus dem Namen des Web-Projekts ab. Mit dem <jta-data-source>-Tag wird die Datenbankverbindung für die Speicherung der Entities angegeben. Diese wird im Application Server als Datenquelle (data-source) definiert und ist in der JBoss Administration Console unter Data Sources –> Local Tx Datasources einzutragen. Natürlich muss der JBoss dann die entsprechende JDBC-jar im lib-Directory vorfinden.

In der Datenquelle werden Verbindungstyp, Treiberklasse und weitere Parameter konfiguriert. Mein Problem war allerdings die Konfiguration der Username und Passwort. Ich habe sie in der Datasource eingegeben. Sie wurden aber nicht übernommen :(.

Oracle-Datasource unter JBoss

Nach einer langen Recherche im Internet habe ich drei Möglichkeiten gefunden, wie das Problem gelöst werden kann:

  • den zu verwendenten Benutzernamen und Passwort im Anwendungscode durch die getConnection Parameter überschreiben
  • das “connection creation context JAAS Subject” verwenden
  • direkte Konfiguration durch die persistence.xml

 

Da ich das Überschreiben der Parameter durch den Anwendungscode nicht für eine gute Idee halte und mit JAAS noch nicht gearbeitet hatte, habe ich mich für die dritte Möglichkeit entschieden. Diese möchte ich auch weiter empfehlen. Ich habe sie direkt in der persistence.xml konfiguriert und folgendes in meiner persistence.xml zusätzlich eingefügt.

<properties>

<property name="hibernate.connection.username" value="username" />
<property name="hibernate.connection.password" value="passwort" />

</properties>

Somit war das Problem gelöst.