Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

हाइबरनेट, mysql, ग्लासफ़िश v3, और JTA डेटा स्रोत

ऐसा लगता है कि आपके कॉन्फ़िगरेशन के लिए, कंटेनर-प्रबंधित लेनदेन डिफ़ॉल्ट रूप से उपयोग किए जाते हैं। इस मामले में आपको लेन-देन सिंक्रनाइज़ेशन का एक तरीका परिभाषित करने की आवश्यकता है ताकि दृढ़ता परत अधिसूचित हो (और उदाहरण के लिए दूसरे स्तर के कैश को अपडेट कर सके)। तो आपको परिभाषित करने की आवश्यकता है 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) से मार्क करना होगा। (देखें यहां इस एनोटेशन के बारे में अधिक जानकारी के लिए)।

आपके पास बीन-प्रबंधित लेनदेन पर स्विच करने का विकल्प भी है। आप यह कहकर कर सकते हैं:

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

तब लेन-देन शुरू/समाप्त करने के लिए बीन जिम्मेदार है:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL का उपयोग करते हुए पिवट टेबल

  2. डेटाबेस ने QuerySet.dates () में एक अमान्य मान लौटाया

  3. MySQL IFNULL अन्य

  4. mysql तालिका के मिलान की जाँच करें

  5. MySQL चुनें कि कॉलम खाली नहीं है