javatpoint - hibernate meaning



हाइबरनेट 4 में सत्र कारखाना बनाएं (6)

4.3.0 एपीआई में भी एक अपडेट है। ServiceRegistryBuilder को 4.3.0 में भी बहिष्कृत किया गया है और मानक सेवा रजिस्ट्रीबिल्डर के साथ प्रतिस्थापित किया गया है। अब सत्र फैक्ट्री बनाने के लिए वास्तविक कोड सत्र कारखाने बनाने पर इस उदाहरण को देखेंगे।

मुझे हाइबरनेट 4 में सत्र फैक्ट्री उत्पन्न करने में परेशानी हो रही है। हाइबरनेट 3 में मैंने सरल किया:

org.hibernate.cfg.Configuration conf= HibernateUtil
    .getLimsInitializedConfiguration(systemConfiguration
.getHibernateconfFile());

SessionFactory sf = conf.configure().buildSessionFactory();

अब मुझे सत्र कारखाना बनाने के लिए एक सेवा रजिस्ट्री कक्षा उत्तीर्ण करने की आवश्यकता है, लेकिन जावडॉक्स इस बारे में बेहद अस्पष्ट हैं कि इस बारे में कैसे जाना है। कोई सुझाव?


Answer #1

[http://www.javabeat.net/session-factory-hibernate-4/] से उद्धरण

हाइबरनेट कोर फ्रेमवर्क में कई एपीआई बहिष्कृत हैं। इस समय निराशाजनक बिंदु में से एक है, आधिकारिक दस्तावेज हाइबरनेट नई एपीआई का उपयोग करने के बारे में स्पष्ट निर्देश नहीं दे रहा है और यह आंकड़े कि दस्तावेज़ीकरण पूर्ण हो गया है। इसके अलावा प्रत्येक incremental संस्करण कुछ महत्वपूर्ण एपीआई पर परिवर्तन हो जाता है। वार्ड पर हाइबरनेट 4.3.0 में सत्र फैक्ट्री बनाने के लिए ऐसी एक नई बात है। हमारे पिछले संस्करणों में हमने सत्र कारखाने को नीचे दिया है:

SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();

विधि निर्माण सत्र फ़ैक्टरी को हाइबरनेट 4 रिलीज से हटा दिया गया है और इसे नए एपीआई के साथ बदल दिया गया है। यदि आप हाइबरनेट 4.3.0 और बाद वाले वर्शन का उपयोग कर रहे हैं, तो आपका कोड होना चाहिए:

Configuration configuration = new Configuration().configure();

StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties());

SessionFactory factory = configuration.buildSessionFactory(builder.build());

क्लास सर्विस रजिस्ट्रीबिल्डर को 4.3.0 से स्टैंडर्ड सर्विस सर्विस रजिस्ट्री बिल्डर द्वारा प्रतिस्थापित किया गया है। ऐसा लगता है कि 5.0 रिलीज में बहुत सारे बदलाव आएंगे। फिर भी बहिष्कृत एपीआई और उपयोग करने के उपयुक्त विकल्पों पर ज्यादा स्पष्टता नहीं है। प्रत्येक वृद्धिशील रिलीज अधिक बहिष्कृत एपीआई के साथ आता है, वे रिलीज 5.0 के लिए कोर फ्रेमवर्क ठीक ट्यूनिंग के रास्ते में हैं।


Answer #2

निम्नलिखित हाइबरनेट 4.0.0 के साथ अनुभव का अनुभव व्यक्त करता है। अंतिम।

org.hibernate.cfg.Configuration (LGPL लाइसेंस के तहत वितरित) org.hibernate.cfg.Configuration कक्षा का कहना है कि:

नोट: इसे 4.0 org.hibernate.metamodel.MetadataSources बाद ServiceRegistryBuilder org.hibernate.metamodel.MetadataSources और org.hibernate.metamodel.MetadataSources उपयोग से प्रतिस्थापित किया जाएगा, जिस बिंदु पर इस वर्ग को हटा दिया जाएगा और 5.0 में हटाने के लिए निर्धारित किया जाएगा। विवरण के लिए HHH-6183 , HHH-2578 और HHH-6586 देखें

2578 अंक देखने के बाद, मैंने इस तरह कुछ इस्तेमाल किया:

ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().configure().buildServiceRegistry();
MetadataSources metadataSources = new MetadataSources(serviceRegistry);
metadataSources.addResource("some_mapping.hbm.xml")
SessionFactory sessionFactory = metadataSources.buildMetadata().buildSessionFactory();

इसके लिए कॉन्फ़िगरेशन पढ़ने के लिए, मुझे xmlns="http://www.hibernate.org/xsd/hibernate-configuration" और xmlns="http://www.hibernate.org/xsd/hibernate-mapping" का उपयोग करने के लिए मेरी हाइबरनेट 3.2.6 कॉन्फ़िगरेशन और मैपिंग फ़ाइलों को संशोधित करना पड़ा। xmlns="http://www.hibernate.org/xsd/hibernate-mapping" और xmlns="http://www.hibernate.org/xsd/hibernate-mapping" विनिर्देशों को भी हटा दें।

मुझे hibernate.cfg.xml और हाइबरनेट में परिभाषित मैपिंग का निरीक्षण करने का कोई तरीका नहीं मिला hibernate.cfg.xml में हाइबरनेट से संबंधित गुणों के लिए उपसर्ग अब वैकल्पिक नहीं है।

यह कुछ के लिए काम कर सकता है।

मैं, एक के लिए, कुछ त्रुटि में भाग गया क्योंकि मैपिंग फाइलें <cache usage="read-write" /> और बहिष्कृत कॉन्फ़िगरेशन तरीके का उपयोग करके समाप्त हो गईं:

Configuration configuration = new Configuration().configure();
SessionFactoryImpl sessionFactory = (SessionFactoryImpl) configuration.buildSessionFactory();
EventListenerRegistry listenerRegistry = sessionFactory.getServiceRegistry().getService(EventListenerRegistry.class);
SolrIndexEventListener indexListener = new SolrIndexEventListener(); // a SaveOrUpdateEventListener i wanted to attach
listenerRegistry.appendListeners(EventType.SAVE_UPDATE, indexListener);

मुझे कार्यक्रम श्रोताओं को प्रोग्रामिक रूप से जोड़ना पड़ा क्योंकि कॉन्फ़िगरेशन अब उन्हें hibernate.cfg.xml में नहीं ढूंढता है


Answer #3

पिछले संस्करणों में सत्र कारखाने को नीचे के रूप में बनाया गया था:

SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();

विधि निर्माण सत्र फ़ैक्टरी को हाइबरनेट 4 रिलीज से हटा दिया गया है और इसे नए एपीआई के साथ बदल दिया गया है। यदि आप हाइबरनेट 4.3.0 और बाद वाले वर्शन का उपयोग कर रहे हैं, तो आपका कोड इस प्रकार होना चाहिए:

Configuration configuration = new Configuration().configure();
StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder().
applySettings(configuration.getProperties());
SessionFactory factory = configuration.buildSessionFactory(builder.build());

Answer #4

हां, उन्होंने पिछले buildSessionFactory API को बहिष्कृत कर दिया है, और यह अच्छी तरह से करना आसान है .. आप ऐसा कुछ कर सकते हैं ..

संपादित करें : सेवा रजिस्ट्री बिल्डर को बहिष्कृत किया गया है। आपको StandardServiceRegistryBuilder का उपयोग करना होगा

public void testConnection() throws Exception {

            logger.info("Trying to create a test connection with the database.");
            Configuration configuration = new Configuration();
            configuration.configure("hibernate_sp.cfg.xml");
            StandardServiceRegistryBuilder ssrb = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties());
            SessionFactory sessionFactory = configuration.buildSessionFactory(ssrb.build());
            Session session = sessionFactory.openSession();
            logger.info("Test connection with the database created successfuly.");
    }

अधिक संदर्भ और गहराई से विस्तार के लिए, आप हाइबरनेट के आधिकारिक परीक्षण मामले को https://github.com/hibernate/hibernate-orm/blob/master/hibernate-testing/src/main/java/org/hibernate/testing/junit4/BaseCoreFunctionalTestCase.java फ़ंक्शन (buildSessionFactory ())।


Answer #5
Configuration hibConfiguration = new Configuration()
            .addResource("wp4core/hibernate/config/table.hbm.xml")
            .configure();       

serviceRegistry = new ServiceRegistryBuilder()
            .applySettings(hibConfiguration.getProperties())
            .buildServiceRegistry();

sessionFactory = hibConfiguration.buildSessionFactory(serviceRegistry);
session = sessionFactory.withOptions().openSession();




hibernate