Hibernate, MySQL, Glassfish v3 und JTA-Datenquelle

8

Ich versuche den Hibernate Entity Manager mit mysql und glassfish zu benutzen. Beim Versuch, eine JTA-Datenquelle zu verwenden, erhalte ich den folgenden Fehler:

%Vor%

So habe ich meine persistence.xml konfiguriert

%Vor%

Wenn ich jedoch eine Nicht-JTA-Datenquelle konfiguriere, funktioniert sie einwandfrei.

%Vor%

Das ist alles gut und gut, aber ich würde wirklich gerne verwenden:

%Vor%

anstelle von:

%Vor%

Fehle ich etwas mit der Hibernate-Konfiguration oder ist es sogar möglich, eine JTA-Datenquelle zu verwenden?

    
KevMo 01.03.2010, 22:40
quelle

1 Antwort

11

Für Ihre Konfiguration werden standardmäßig Container-verwaltete Transaktionen verwendet. In diesem Fall müssen Sie eine Art der Transaktionssynchronisierung definieren, damit der Persistenz-Layer benachrichtigt wird (und beispielsweise den Cache der 2. Ebene aktualisieren kann). Sie müssen also manager_lookup_class definieren Eigenschaft wie folgt:

%Vor%

Sie müssen auch Geschäftsmethoden markieren, die auf Datenebene als "transaktional" zugreifen. Dafür müssen Sie sie mit @javax.ejb.TransactionAttribute(REQUIRED) markieren (siehe hier ) Informationen über diese Anmerkung).

Sie haben auch die Möglichkeit, zu Bean-verwalteten Transaktionen zu wechseln. Sie können es tun, indem Sie sagen:

hibernate.transaction.factory_class=org.hibernate.transaction.JTATransactionFactory

Dann ist die Bean verantwortlich für das Starten / Beenden der Transaktion:

%Vor%     
dma_k 01.03.2010, 23:25
quelle