sql >> Database teknologi >  >> RDS >> Mysql

hibernate, mysql, glassfish v3 og JTA datakilde

Det ser ud til, at containeradministrerede transaktioner som standard bruges til din konfiguration. I dette tilfælde skal du definere en måde til transaktionssynkronisering, så persistenslaget får besked (og f.eks. kan opdatere cachen på 2. niveau). Så du skal definere manager_lookup_class egenskab som følgende:

// For GlassFish:
hibernate.transaction.manager_lookup_class=org.hibernate.transaction.SunONETransactionManagerLookup
// For WebSpere:
hibernate.transaction.manager_lookup_class=org.hibernate.transaction.WebSphereExtendedJTATransactionLookup
// For JBoss:
hibernate.transaction.manager_lookup_class=org.hibernate.transaction.JBossTransactionManagerLookup
// For OpenEJB:
hibernate.transaction.manager_lookup_class=org.apache.openejb.hibernate.TransactionManagerLookup

Du skal også markere forretningsmetoder, der tilgår datalaget, som "transaktionelle". Til det skal du markere dem med @javax.ejb.TransactionAttribute(REQUIRED) (se her for mere information om denne annotering).

Du har også mulighed for at skifte til bønne-administrerede transaktioner. Du kan gøre det ved at sige:

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

Så er bønnen ansvarlig for at starte/afslutte transaktionen:

org.hibernate.Session session = ...;
org.hibernate.Transaction tx = null;
try {
    tx = session.beginTransaction();
    session.createQuery(...); // do some staff
    tx.commit();
} catch (HibernateException e)
{
    if (tx != null) {
        tx.rollback();
    }
}



  1. At SHA512-hash en adgangskode i MySQL-database af Python

  2. Laravel Simple Month Selection

  3. Maksimalt (anvendeligt) antal rækker i en Postgresql-tabel

  4. SYSTIMESTAMP Funktion i Oracle