sql >> データベース >  >> RDS >> Mysql

hibernate、mysql、glassfish v3、およびJTAデータソース

    ご使用の構成では、コンテナー管理トランザクションがデフォルトで使用されているようです。この場合、永続層に通知されるようにトランザクション同期の方法を定義する必要があります(たとえば、第2レベルのキャッシュを更新できます)。したがって、を定義する必要があります。 manager_lookup_class 次のようなプロパティ:

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

    また、データレイヤーにアクセスするビジネスメソッドを「トランザクション」としてマークする必要があります。そのためには、@javax.ejb.TransactionAttribute(REQUIRED)でマークする必要があります (こちら を参照してください。 この注釈の詳細については)

    Bean管理のトランザクションに切り替えるオプションもあります。あなたは言うことによってそれをすることができます:

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

    次に、Beanはトランザクションの開始/終了を担当します。

    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. MysqlMySQLまたはPHP行を動的に2列に変換します

    2. Oracleデータ型:VARCHAR2またはCHARを使用する必要があります

    3. RSUメソッドを使用したMySQLGaleraクラスターのオンラインスキーマアップグレード

    4. PythonでMySQL形式で結果を印刷する