sql >> Databáze >  >> RDS >> Mysql

hibernate, mysql, glassfish v3 a zdroj dat JTA

Zdá se, že pro vaši konfiguraci se ve výchozím nastavení používají transakce spravované kontejnery. V tomto případě je potřeba definovat způsob synchronizace transakcí, aby byla upozorněna perzistentní vrstva (a mohla například aktualizovat mezipaměť 2. úrovně). Musíte tedy definovat manager_lookup_class vlastnost takto:

// 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

Také musíte označit obchodní metody, které přistupují k datové vrstvě, jako „transakční“. Za tímto účelem je musíte označit pomocí @javax.ejb.TransactionAttribute(REQUIRED) (viz zde pro více informací o této anotaci).

Máte také možnost přejít na transakce řízené fazolemi. Můžete to udělat tak, že řeknete:

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

Poté je bean zodpovědný za zahájení/ukončení transakce:

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. SQL Server:převod ((int)rok,(int)měsíc,(int)den) na datum a čas

  2. mnoho-k-mnoho-vztah mezi dvěma entitami v jarní botě

  3. Redundance Oracle RAC N+1

  4. Seskupit SQL podle pořadí podle