हाइबरनेट से संबंधित शीर्ष 30 साक्षात्कार प्रश्न और उत्तर (2026)

हाइबरनेट इंटरव्यू प्रश्न और उत्तर

क्या आप हाइबरनेट के इंटरव्यू की तैयारी कर रहे हैं? यह समझना कि क्या उम्मीद करनी है, उम्मीदवार की योग्यता को उजागर करने में सहायक होता है, और हाइबरनेट इंटरव्यू पर केंद्रित यह लेख आधुनिक एंटरप्राइज डेवलपमेंट भूमिकाओं के लिए व्यवहार में महत्वपूर्ण प्रमुख सोच पैटर्न को सामने लाता है।

हाइबरनेट का अध्ययन करने से करियर के कई उज्ज्वल अवसर खुलते हैं, क्योंकि उद्योग जगत में तकनीकी अनुभव और डोमेन विशेषज्ञता की मांग बढ़ रही है। इससे पेशेवरों को प्रभावी विश्लेषण और कौशल के साथ जमीनी स्तर का अनुभव प्राप्त करने और अपने कौशल को निखारने में मदद मिलती है। ये जानकारियां नए, अनुभवी, मध्य-स्तरीय और वरिष्ठ उम्मीदवारों को विभिन्न तकनीकी परिवेशों में पूछे जाने वाले आम सवालों और उनके जवाबों को समझने में सहायक होती हैं।
अधिक पढ़ें…

👉 मुफ़्त PDF डाउनलोड करें: हाइबरनेट इंटरव्यू प्रश्न और उत्तर

हाइबरनेट से संबंधित शीर्ष साक्षात्कार प्रश्न और उत्तर

1) हाइबरनेट क्या है और इसका उपयोग क्यों किया जाता है? Java अनुप्रयोग?

हाइबरनेट एक ओपन-सोर्स ऑब्जेक्ट-रिलेशनल मैपिंग (ओआरएम) फ्रेमवर्क है जो ऑब्जेक्ट-रिलेशनल मैपिंग को स्वचालित करता है। Java यह ऑब्जेक्ट्स और डेटाबेस टेबल्स का उपयोग करता है। इससे डेवलपर्स को बार-बार SQL और JDBC कोड लिखने की आवश्यकता समाप्त हो जाती है। Hibernate एक मजबूत और लचीला परसिस्टेंस लेयर प्रदान करता है, जिससे डेवलपर्स सीधे SQL क्वेरी के बजाय ऑब्जेक्ट्स के साथ काम कर सकते हैं।

मुख्य लाभ:

  • अनावश्यक JDBC कोड को कम करता है
  • पारदर्शी डेटा संग्रहण और कैशिंग का समर्थन करता है।
  • बोलियों के माध्यम से डेटाबेस की स्वतंत्रता सुनिश्चित करता है
  • यह स्वचालित टेबल जनरेशन और लेज़ी लोडिंग की सुविधा प्रदान करता है।

उदाहरण: एक डेवलपर किसी ऑब्जेक्ट को सेव कर सकता है। Employee सीधे उपयोग session.save(employee) बिना मैन्युअल रूप से SQL इंसर्ट स्टेटमेंट लिखे।


2) हाइबरनेट ऑब्जेक्ट के जीवनचक्र की व्याख्या कीजिए।

एक हाइबरनेट ऑब्जेक्ट अपने जीवनचक्र के दौरान कई अवस्थाओं से गुजरता है। डेटा की निरंतरता और प्रदर्शन को प्रबंधित करने के लिए इन अवस्थाओं को समझना महत्वपूर्ण है।

राज्य विवरण उदाहरण
क्षणिक यह ऑब्जेक्ट किसी भी हाइबरनेट सत्र से संबद्ध नहीं है। new Employee()
ज़िद्दी सक्रिय सत्र से संबद्ध वस्तु session.save(emp)
जुदा जुदा ऑब्जेक्ट मौजूद था लेकिन सेशन बंद हो गया। session.close()
हटाया हटाने के लिए चिह्नित वस्तु session.delete(emp)

हाइबरनेट स्वचालित रूप से संस्थाओं को इन अवस्थाओं के माध्यम से परिवर्तित करता है, और डेटाबेस के साथ सिंक्रनाइज़ेशन का प्रबंधन करता है।


3) हाइबरनेट का उपयोग करने के क्या फायदे और नुकसान हैं?

हाइबरनेट कई फायदे प्रदान करता है, लेकिन इसमें कुछ कमियां भी हैं जिनके बारे में डेवलपर्स को पता होना चाहिए।

फायदे नुकसान
विकास का समय कम करता है तीव्र सीखने की अवस्था
डेटाबेस स्वतंत्रता जटिल क्वेरी के लिए धीमा प्रदर्शन
स्वचालित तालिका निर्माण इसके लिए सावधानीपूर्वक कॉन्फ़िगरेशन की आवश्यकता है।
कैशिंग से प्रदर्शन बेहतर होता है SQL को डीबग करना कठिन हो सकता है

उदाहरण: कई डेटाबेस का उपयोग करने वाले एंटरप्राइज सिस्टम के लिए, हिबरनेट की डायलेक्ट सुविधा क्रॉस-डेटाबेस पोर्टेबिलिटी को सरल बनाती है।


4) हाइबरनेट, जेडीबीसी से किस प्रकार भिन्न है?

Feature सीतनिद्रा में होना जेडीबीसी
अमूर्तन स्तर ओआरएम फ्रेमवर्क निम्न-स्तरीय API
पूछताछ भाषा एचक्यूएल (ऑब्जेक्ट-ओरिएंटेड) एसक्यूएल
कैशिंग अंतर्निहित समर्थन कोई कैशिंग नहीं
लेन - देन प्रबंधन स्वचालित हाथ-संबंधी
गलती संभालना अपवाद अनुवाद SQL अपवाद

हाइबरनेट डेटाबेस के साथ होने वाली परस्पर क्रियाओं को सरल बनाता है, जबकि जेडीबीसी में कनेक्शन और एसक्यूएल का मैन्युअल प्रबंधन आवश्यक होता है। इसलिए, बड़े पैमाने पर डेटा-आधारित अनुप्रयोगों के लिए हाइबरनेट को प्राथमिकता दी जाती है।


5) हाइबरनेट में डेटा प्राप्त करने की विभिन्न प्रकार की रणनीतियाँ क्या हैं?

हाइबरनेट समर्थन करता है उत्सुक और आलसी प्रदर्शन को बेहतर बनाने के लिए रणनीतियों को खोजना।

फ़ेच प्रकार विवरण उदाहरण
आलसी एक्सेस किए जाने पर ही संबंधित एंटिटी लोड करता है संग्रहों के लिए डिफ़ॉल्ट
उत्सुक सभी संबंधित संस्थाओं को तुरंत लोड करता है के माध्यम से विन्यस्त किया गया fetch=FetchType.EAGER

उदाहरण:

@OneToMany(fetch = FetchType.LAZY)
private Set<Employee> employees;

अनावश्यक डेटा लोडिंग से बचकर लेज़ी फ़ेचिंग से प्रदर्शन में सुधार होता है।


6) हाइबरनेट में कैशिंग के विभिन्न प्रकारों की व्याख्या कीजिए।

हाइबरनेट डेटाबेस तक पहुंच को कम करने और प्रदर्शन को बेहतर बनाने के लिए कैशिंग का उपयोग करता है।

कैश प्रकार उद्देश्य कार्यान्वयन
प्रथम-स्तरीय कैश प्रति-सत्र कैश डिफ़ॉल्ट, अंतर्निर्मित
द्वितीय-स्तरीय कैश सत्रों में साझा किया गया Ehcache, इन्फिनिस्पैन
क्वेरी कैश क्वेरी परिणामों को संग्रहीत करता है ऐच्छिक

उदाहरण: द्वितीय-स्तरीय कैश सक्रिय करना:

<property name="hibernate.cache.use_second_level_cache" value="true"/>

7) HQL क्या है और यह SQL से किस प्रकार भिन्न है?

HQL (Hibernate Query Language) एक ऑब्जेक्ट-ओरिएंटेड क्वेरी भाषा है जो डेटाबेस टेबल के बजाय एंटिटी ऑब्जेक्ट पर काम करती है।

SQL के विपरीत, जो टेबल और कॉलम नामों का उपयोग करता है, HQL क्लास और प्रॉपर्टी नामों का उपयोग करता है।

उदाहरण:

Query query = session.createQuery("from Employee where salary > 50000");
Feature एचक्यूएल एसक्यूएल
Operaटेस्ट चालू संस्थाओं टेबल्स
डेटाबेस स्वतंत्र हाँ नहीं
मामले की संवेदनशीलता क्लास के नामों पर निर्भर करता है यह डेटाबेस प्रबंधन प्रणाली पर निर्भर करता है।

8) स्प्रिंग फ्रेमवर्क के साथ हाइबरनेट को कैसे एकीकृत किया जा सकता है?

स्प्रिंग, हाइबरनेट को एकीकृत करने का एक सरल तरीका प्रदान करता है। HibernateTemplate और SessionFactory फलियां।

यह एनोटेशन या XML कॉन्फ़िगरेशन का उपयोग करके लेन-देन और सत्रों को घोषणात्मक रूप से प्रबंधित करता है।

उदाहरण:

<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"/>

स्प्रिंग के साथ एकीकरण से डिपेंडेंसी इंजेक्शन, डिक्लेरेटिव ट्रांजैक्शन मैनेजमेंट और बॉयलरप्लेट कोड में कमी लाना आसान हो जाता है।


9) हाइबरनेट में विभिन्न इनहेरिटेंस मैपिंग रणनीतियाँ क्या हैं?

हाइबरनेट वंशानुक्रम पदानुक्रमों को मैप करने के लिए तीन मुख्य रणनीतियों का समर्थन करता है।

रणनीति विवरण टिप्पणी
एकल टेबल सभी उपवर्गों को एक ही तालिका में संग्रहीत करता है @Inheritance(strategy = InheritanceType.SINGLE_TABLE)
संयुक्त तालिका विदेशी कुंजी द्वारा जुड़े अलग-अलग टेबल @Inheritance(strategy = InheritanceType.JOINED)
तालिका प्रति कक्षा प्रत्येक उपवर्ग के लिए एक तालिका @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)

उदाहरण: Joined यह रणनीति तब आदर्श है जब किसी एक तालिका में बिना नल मान वाले उपवर्ग-विशिष्ट स्तंभों की आवश्यकता हो।


10) हाइबरनेट में विभिन्न प्रकार के एसोसिएशन क्या हैं?

एसोसिएशन, हाइबरनेट में संस्थाओं के बीच संबंधों को परिभाषित करते हैं।

एसोसिएशन प्रकार उदाहरण विवरण
One-to-One उपयोगकर्ता ↔ पता प्रत्येक इकाई की एक संबंधित इकाई होती है।
One-to-Many विभाग → कर्मचारी एक इकाई कई अन्य इकाइयों से संबंधित होती है।
Many-to-One कर्मचारी → विभाग कई संस्थाएं एक ही मूल संस्था को संदर्भित करती हैं।
Many-to-Many छात्र ↔ पाठ्यक्रम दोनों पक्षों के कई संगठन हैं।

हाइबरनेट एनोटेशन का उपयोग करता है जैसे @OneToMany, @ManyToOne, तथा @JoinTable इन संबंधों को स्थापित करने के लिए।


11) हाइबरनेट में लेन-देन के विभिन्न प्रकार क्या हैं और उन्हें कैसे प्रबंधित किया जाता है?

हाइबरनेट दोनों प्रदान करता है कार्यक्रम संबंधी और कथात्मक लेनदेन प्रबंधन तंत्र। यह JDBC, JTA, या कंटेनर-प्रबंधित लेनदेन से लेनदेन API को अलग करता है।

लेन-देन के प्रकार:

  1. जेडीबीसी लेनदेन – जेडीबीसी द्वारा सीधे प्रबंधित Connection वस्तुओं।
  2. जेटीए लेनदेन – इसका उपयोग उन एंटरप्राइज एप्लीकेशन्स में किया जाता है जहां कई संसाधन (जैसे कई डेटाबेस) शामिल होते हैं।
  3. कंटेनर-प्रबंधित लेनदेन (सीएमटी) – एप्लिकेशन सर्वरों द्वारा प्रबंधित (उदाहरण के लिए, जेबॉस, वेबलॉजिक)।

उदाहरण (प्रोग्रामेटिक लेनदेन):

Transaction tx = session.beginTransaction();
session.save(employee);
tx.commit();

स्प्रिंग-आधारित अनुप्रयोगों में, घोषणात्मक लेनदेन का उपयोग करके @Transactional चिंताओं के बेहतर पृथक्करण के लिए इन्हें प्राथमिकता दी जाती है।


12) हाइबरनेट में सेशनफैक्ट्री और सेशन की भूमिका स्पष्ट कीजिए।

RSI SessionFactory एक धागे की सुरक्षितहाइबरनेट बनाने और प्रबंधित करने के लिए जिम्मेदार भारी-भरकम ऑब्जेक्ट Session उदाहरणों।

A Sessionदूसरी ओर, यह एक का प्रतिनिधित्व करता है कार्य की एकल इकाई और यह थ्रेड-सुरक्षित नहीं.

घटक विस्तार विवरण
सत्रफैक्ट्री आवेदन चौड़ा एक बार बनाया गया, सत्र बनाने के लिए उपयोग किया जाता है
अधिवेशन प्रति लेनदेन CRUD ऑपरेशन और डेटा परसिस्टेंस का प्रबंधन करता है

उदाहरण:

SessionFactory factory = new Configuration().configure().buildSessionFactory();
Session session = factory.openSession();

एक का उपयोग करके SessionFactory प्रति डेटाबेस इंस्टेंस की संख्या को सर्वोत्तम अभ्यास माना जाता है।


13) हाइबरनेट में get() और load() विधियों के बीच क्या अंतर है?

दोनों विधियों का उपयोग वस्तुओं को पुनः प्राप्त करने के लिए किया जाता है, लेकिन उनके व्यवहार में अंतर होता है।

विधि व्यवहार इस्तेमाल के बाद
प्राप्त() रिटर्न null यदि वस्तु मौजूद नहीं है जब आपको किसी वस्तु के अस्तित्व के बारे में अनिश्चितता हो
भार() फेंकता ObjectNotFoundException नहीं मिला तो जब वस्तु का अस्तित्व सुनिश्चित हो

उदाहरण:

Employee e1 = session.get(Employee.class, 1);
Employee e2 = session.load(Employee.class, 1);

load() यह लेज़ी इनिशियलाइज़ेशन का उपयोग करता है और एक प्रॉक्सी ऑब्जेक्ट लौटाता है, जबकि get() यह तुरंत डेटाबेस पर प्रभाव डालता है।


14) हाइबरनेट स्वचालित डर्टी चेकिंग को कैसे संभालता है?

हाइबरनेट स्थायी संस्थाओं में किए गए परिवर्तनों का स्वचालित रूप से पता लगाता है और डेटाबेस को अपडेट करता है। flush() या लेनदेन की प्रतिबद्धता।

इस प्रक्रिया के रूप में जाना जाता है गंदी जाँच.

उदाहरण:

Employee emp = session.get(Employee.class, 1);
emp.setSalary(90000);
session.getTransaction().commit(); // Hibernate auto-updates salary

गंदगी की जाँच करने से मैन्युअल कार्य कम होने से कार्यक्षमता में सुधार होता है। update विवरण तैयार करना और डेटाबेस के साथ इकाई का सिंक्रनाइज़ेशन बनाए रखना।


15) हाइबरनेट क्राइटेरिया एपीआई में विभिन्न फ़ेचिंग रणनीतियाँ क्या हैं?

RSI मानदंड एपीआई यह रनटाइम पर संस्थाओं को गतिशील रूप से क्वेरी करने की अनुमति देता है। यह फ़ेचिंग रणनीतियों का समर्थन करता है। FetchMode.

फ़ेच मोड विवरण
शामिल हों SQL जॉइन का उपयोग करके एसोसिएशन प्राप्त करता है
चुनते हैं अलग-अलग सेलेक्ट स्टेटमेंट का उपयोग करके एसोसिएशन प्राप्त करता है
सबसिलेक्ट डेटा प्राप्त करने के लिए सबक्वेरी का उपयोग करता है

उदाहरण:

criteria.setFetchMode("department", FetchMode.JOIN);

JOIN क्वेरी संबंधित एंटिटीज़ के लिए कुशल होती हैं, जबकि SELECT क्वेरी सरल एसोसिएशन के लिए उपयोग की जाती हैं।


16) हाइबरनेट में merge() और update() विधियों के बीच क्या अंतर है?

विधि विवरण उदाहरण
अपडेट करें () सत्र से अलग हुई वस्तु को पुनः जोड़ता है जब समान आईडी वाला कोई स्थायी इंस्टेंस मौजूद न हो
मर्ज () पृथक ऑब्जेक्ट से परिवर्तनों की प्रतिलिपि स्थायी ऑब्जेक्ट में बनाता है जब समान आईडी का कोई दूसरा उदाहरण मौजूद हो

उदाहरण:

session.merge(detachedEmployee);

merge() यह वितरित वातावरणों में अधिक सुरक्षित है क्योंकि यह परस्पर विरोधी स्थायी इंस्टेंसों के कारण होने वाले अपवादों से बचता है।


17) हाइबरनेट डेटाबेस स्वतंत्रता कैसे प्राप्त करता है?

हाइबरनेट हासिल करता है डेटाबेस स्वतंत्रता पूज्य गुरुदेव के मार्गदर्शन से संपन्न कर सकते हैं - बोलियों—वे क्लास जो विभिन्न डेटाबेस के लिए SQL के विभिन्न रूपों को परिभाषित करती हैं।

यह डायलेक्ट हाइबरनेट को बताता है कि प्रत्येक विशिष्ट डेटाबेस सिस्टम के लिए अनुकूलित SQL कैसे उत्पन्न किया जाए।

उदाहरण:

<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

कुछ सामान्य बोलियों में शामिल हैं:

  • OracleDialect
  • PostgreSQLDialect
  • SQLServerDialect

इससे डेवलपर्स को डेटाबेस में बदलाव किए बिना डेटाबेस बदलने की सुविधा मिलती है। Java कोडबेस.


18) हाइबरनेट के प्रदर्शन को अनुकूलित करने के लिए सर्वोत्तम अभ्यास क्या हैं?

हाइबरनेट को अनुकूलित करने के लिए प्रदर्शन और स्थिरता के बीच संतुलन बनाए रखना आवश्यक है।

प्रमुख अनुकूलन रणनीतियाँ:

  1. सक्षम द्वितीय-स्तर और क्वेरी कैशिंग.
  2. उपयोग बैच फ़ेचिंग संबंधित संस्थाओं के लिए।
  3. पसंद करते हैं धीरे लोड हो रहा है बड़े संगठनों के लिए।
  4. सेशन की अवधि कम से कम रखें; सेशन तभी खोलें जब आवश्यक हो।
  5. उपयोग HQL शामिल होता है or मानदंड प्रश्न एकाधिक चयन के बजाय।

उदाहरण:

<property name="hibernate.jdbc.batch_size">30</property>

बैच ऑपरेशन डेटाबेस राउंड-ट्रिप की संख्या को कम करते हैं।


19) HQL और क्राइटेरिया API में क्या अंतर हैं?

Feature एचक्यूएल मानदंड एपीआई
प्रकार स्ट्रिंग आधारित वस्तु के उन्मुख
संकलन-समय सुरक्षा कोई नहीं प्रकार- सुरक्षित
गतिशील क्वेरी मुश्किल आसान
जटिल प्रश्न जुड़ने में आसानी मल्टी-लेवल जॉइन के लिए कठिन

उदाहरण:

CriteriaBuilder cb = session.getCriteriaBuilder();
CriteriaQuery<Employee> cq = cb.createQuery(Employee.class);
cq.from(Employee.class);
session.createQuery(cq).getResultList();

जब डायनामिक फ़िल्टरिंग और रनटाइम क्वेरी जनरेशन की आवश्यकता होती है, तो क्राइटेरिया एपीआई बेहतर विकल्प होता है।


20) हाइबरनेट 5 और हाइबरनेट 6 के बीच मुख्य अंतर क्या हैं?

Feature हाइबरनेट 5 हाइबरनेट 6
जेपीए संस्करण जेपीए 2.2 जेपीए 3.0
क्वेरी API विरासत org.hibernate.query.Query आधुनिक jakarta.persistence.Query
Bootstrapपिंग पारंपरिक XML या कॉन्फ़िगरेशन सरलीकृत प्रोग्रामेटिक बूटस्ट्रैपिंग
SQL जनरेशन विरासत पार्सर नया ANTLR-आधारित SQL AST पार्सर
जकार्ता प्रवासन समर्थित नहीं पूरी तरह से उपयोग करता है jakarta.* नामस्थान

उदाहरण: Hibernate 6 में, सभी आयात स्थानांतरित हो गए javax.persistence.* सेवा मेरे jakarta.persistence.*.

यह अपग्रेड हाइबरनेट को आधुनिक मानकों के अनुरूप बनाता है। Java ईई और जकार्ता ईई मानक।


21) हाइबरनेट में लेज़ी लोडिंग क्या है, और यह प्रदर्शन को कैसे प्रभावित कर सकती है?

लेज़ी लोडिंग एक हाइबरनेट तंत्र है जहाँ संबंधित एंटिटीज़ को लोड किया जाता है। केवल तभी जब एक्सेस किया जाएपैरेंट एंटिटी को फ़ेच करने के बजाय, जब पैरेंट एंटिटी को फ़ेच किया जाता है तब इसका उपयोग किया जाता है। इससे अनावश्यक डेटाबेस क्वेरीज़ से बचा जा सकता है और परफ़ॉर्मेंस बेहतर होती है।

उदाहरण:

@OneToMany(fetch = FetchType.LAZY)
private Set<Employee> employees;

लाभ:

  • प्रारंभिक लोड होने का समय कम करता है।
  • मेमोरी की कार्यक्षमता में सुधार करता है।

नुकसान:

  • सेशन के बाहर एसोसिएशन तक पहुँचने से यह समस्या उत्पन्न होती है। LazyInitializationException.
फ़ेच प्रकार विवरण प्रदर्शन प्रभाव
उत्सुक एसोसिएशन तुरंत लोड हो जाते हैं प्रारंभिक लोड धीमा
आलसी मांग पर लोड तेज़ प्रारंभिक लोड

22) हाइबरनेट में कैस्केड प्रकारों की अवधारणा की व्याख्या कीजिए।

कैस्केड प्रकार यह परिभाषित करते हैं कि एक इकाई पर लागू किए गए ऑपरेशन संबंधित इकाइयों तक कैसे प्रसारित होते हैं।

उपलब्ध कैस्केड प्रकार:

कैस्केड प्रकार विवरण
सब यह सभी कार्यों (सेव, अपडेट, डिलीट आदि) को लागू करता है।
दृढ़ रहना केवल संचालन को सुरक्षित करता है
मर्ज विलय प्रक्रिया को आगे बढ़ाता है
निकालें संबंधित संस्थाओं को हटाता है
ताज़ा चाइल्ड एंटिटीज़ को रीफ़्रेश करता है
अलग करना सभी संबंधित संस्थाओं को अलग करता है

उदाहरण:

@OneToMany(cascade = CascadeType.ALL)
private Set<Employee> employees;

इससे यह सुनिश्चित होता है कि जब किसी विभाग को हटाया जाता है, तो उससे जुड़े सभी कर्मचारी भी स्वचालित रूप से हटा दिए जाते हैं।


23) हाइबरनेट एनोटेशन का उपयोग करके संस्थाओं के बीच संबंधों को कैसे प्रबंधित करता है?

हाइबरनेट समर्थन करता है जेपीए एनोटेशन संस्थाओं के बीच संबंधों और जुड़ावों को परिभाषित करना।

संबंध प्रकार टिप्पणी उदाहरण
एक से एक @OneToOne उपयोगकर्ता ↔ प्रोफ़ाइल
कई लोगों के लिए एक @OneToMany विभाग → कर्मचारी
कई-टू-वन @ManyToOne कर्मचारी → विभाग
अनेक-से-अनेक @ManyToMany छात्र ↔ पाठ्यक्रम

उदाहरण:

@OneToMany(mappedBy="department")
private Set<Employee> employees;

एनोटेशन कॉन्फ़िगरेशन को सरल बनाते हैं, पठनीयता में सुधार करते हैं और XML निर्भरताओं को दूर करते हैं।


24) हाइबरनेट में save(), persist() और saveOrUpdate() में क्या अंतर है?

विधि विवरण वापसी प्रकार लेनदेन आवश्यकता
बचा ले() यह तुरंत एक रिकॉर्ड सम्मिलित करता है और आईडी लौटाता है। serializable ऐच्छिक
दृढ़ रहना() यह इकाई को स्थायी बनाता है लेकिन आईडी वापस नहीं करता है। शून्य अनिवार्य
saveOrUpdate() नया होने पर सेव करता है, मौजूदा होने पर अपडेट करता है शून्य अनिवार्य

उदाहरण:

session.saveOrUpdate(employee);

उपयोग persist() जेपीए वातावरण में बेहतर सुवाह्यता के लिए, और saveOrUpdate() हाइब्रिड परसिस्टेंस लॉजिक के लिए।


25) हाइबरनेट कंपोजिट प्राइमरी कीज़ को कैसे हैंडल करता है?

हाइबरनेट मिश्रित कुंजियों को संभालने के लिए निम्नलिखित का उपयोग करता है: @Embeddable और @EmbeddedId टिप्पणियाँ.

उदाहरण:

@Embeddable
public class EmployeeId implements Serializable {
   private int empId;
   private String departmentId;
}

@Entity
public class Employee {
   @EmbeddedId
   private EmployeeId id;
}

कंपोजिट कीज़ पुराने डेटाबेस स्कीमा में या तब उपयोगी होती हैं जब अद्वितीय बाधा कई कॉलमों तक फैली होती है।


26) हाइबरनेट में N+1 सेलेक्ट प्रॉब्लम क्या है और इससे कैसे बचा जा सकता है?

एन+1 सेलेक्ट प्रॉब्लम तब होती है जब हाइबरनेट मुख्य एंटिटी के लिए एक क्वेरी और उससे जुड़ी प्रत्येक एंटिटी के लिए एन अतिरिक्त क्वेरी निष्पादित करता है।

उदाहरण:

  • प्रश्न 1: सभी विभागों को प्राप्त करें।
  • क्वेरी N: प्रत्येक विभाग के लिए कर्मचारियों को प्राप्त करें।

समाधान की:

  1. उपयोग जॉइन फ़ेच HQL में।
  2. लागू करें बैच फ़ेचिंग.
  3. सक्षम द्वितीय-स्तरीय कैशिंग.

उदाहरण:

SELECT d FROM Department d JOIN FETCH d.employees;

27) hibernate.cfg.xml फ़ाइल की क्या भूमिका है?

RSI hibernate.cfg.xml यह फ़ाइल केंद्रीय कॉन्फ़िगरेशन फ़ाइल है जिसका उपयोग निम्नलिखित को परिभाषित करने के लिए किया जाता है:

  • डेटाबेस कनेक्शन गुण
  • हाइबरनेट बोली
  • इकाई मानचित्रण
  • कैशिंग और लेनदेन सेटिंग्स

उदाहरण:

<hibernate-configuration>
  <session-factory>
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    <mapping class="com.example.Employee"/>
  </session-factory>
</hibernate-configuration>

आधुनिक व्यवस्थाओं में इसे एनोटेशन-आधारित या प्रोग्रामेटिक कॉन्फ़िगरेशन द्वारा प्रतिस्थापित या पूरक किया जा सकता है।


28) आप हाइबरनेट में पेजिंग कैसे लागू कर सकते हैं?

पेजिनेशन से एक ही बार में सारे परिणाम लोड करने के बजाय डेटा को टुकड़ों में कुशलतापूर्वक प्राप्त करना संभव हो जाता है।

उदाहरण:

Query query = session.createQuery("from Employee");
query.setFirstResult(10);
query.setMaxResults(20);
List<Employee> list = query.list();

लाभ:

  • मेमोरी पर भार कम करता है।
  • बड़े डेटासेट के लिए एप्लिकेशन के प्रदर्शन में सुधार करता है।

यह REST API या बड़े टेबल डेटा व्यू में विशेष रूप से उपयोगी है।


29) हाइबरनेट समवर्तीता और संस्करण प्रबंधन कैसे करता है?

हाइबरनेट समवर्ती अपडेट टकरावों को रोकता है आशावादी ताला @Version एनोटेशन के माध्यम से।

उदाहरण:

@Version
@Column(name="version")
private int version;

प्रत्येक अपडेट से वर्शन फ़ील्ड में वृद्धि होती है। यदि दो सेशन एक ही रिकॉर्ड को संशोधित करने का प्रयास करते हैं, तो हाइबरनेट एक त्रुटि उत्पन्न करता है। OptimisticLockException.

लॉकिंग प्रकार विवरण सामान्य उपयोग
आशावादी संस्करण फ़ील्ड का उपयोग करता है बहु-उपयोगकर्ता प्रणालियाँ
निराशावादी डेटाबेस पंक्तियों को लॉक करता है उच्च प्रतिस्पर्धा प्रणाली

30) हिबरनेट के कुछ सामान्य साक्षात्कार परिदृश्य क्या हैं और आप उन्हें कैसे संभालेंगे?

परिदृश्य 1: सेशन बंद करने के बाद LazyInitializationException आ जाता है।
👉 समाधान: उपयोग करें OpenSessionInView पैटर्न या डेटा को तुरंत प्राप्त करें।

परिदृश्य 2: पृथक संस्थाओं के लिए डुप्लिकेट प्रविष्टियाँ।
👉 समाधान: उपयोग करें merge() के बजाय update().

परिदृश्य 3: अत्यधिक क्वेरी के कारण खराब प्रदर्शन।
👉 समाधान: कैशिंग, बैच फ़ेचिंग या HQL जॉइन लागू करें।

परिदृश्य 4: एक साथ कई अपडेट करने के दौरान होने वाले टकराव।
👉 समाधान: ऑप्टिमिस्टिक लॉकिंग को लागू करें @Version.

ये वास्तविक दुनिया के परिदृश्य सैद्धांतिक ज्ञान से परे हिबरनेट के बारे में आपकी समझ को प्रदर्शित करते हैं - जो वरिष्ठ डेवलपर और आर्किटेक्ट के साक्षात्कार के लिए महत्वपूर्ण है।


🔍 वास्तविक दुनिया के परिदृश्यों और रणनीतिक उत्तरों के साथ हिबरनेट के शीर्ष साक्षात्कार प्रश्न

नीचे दिया गया हैं हाइबरनेट से संबंधित 10 व्यावहारिक साक्षात्कार प्रश्न ज्ञान-आधारित, व्यवहारिक और परिस्थितिजन्य श्रेणियों में।

प्रत्येक प्रश्न में शामिल है साक्षात्कारकर्ता क्या अपेक्षा करता है और एक रणनीतिक उदाहरण उत्तर आवश्यक वाक्यांशों के साथ (प्रत्येक का एक बार उपयोग किया गया)।

1) हाइबरनेट क्या है और इसका उपयोग एंटरप्राइज एप्लीकेशन में क्यों किया जाता है?

उम्मीदवार से अपेक्षित: हाइबरनेट के उद्देश्य, लाभ और सामान्य उपयोग के मामलों को स्पष्ट रूप से समझाने की क्षमता।

उदाहरण उत्तर: हाइबरनेट एक ऑब्जेक्ट रिलेशनल मैपिंग फ्रेमवर्क है जो विभिन्न प्रणालियों के बीच संचार को सरल बनाता है। Java इसका उपयोग अनुप्रयोगों और संबंधपरक डेटाबेस में किया जाता है। यह अनावश्यक SQL कोड को कम करता है, डेटाबेस में पोर्टेबिलिटी को बेहतर बनाता है, और कैशिंग, लेनदेन प्रबंधन और लेज़ी लोडिंग जैसी सुविधाएँ प्रदान करता है, जिससे एंटरप्राइज़ सिस्टम में प्रदर्शन बेहतर होता है।


2) क्या आप हाइबरनेट में get() और load() के बीच अंतर समझा सकते हैं?

उम्मीदवार से अपेक्षित: डेटा पुनर्प्राप्ति तंत्र और प्रॉक्सी व्यवहार की समझ।

उदाहरण उत्तर: RSI get() यह विधि एक वास्तविक ऑब्जेक्ट लौटाती है और तुरंत डेटाबेस से संपर्क करती है, यदि रिकॉर्ड मौजूद नहीं है तो यह null लौटाती है। load() यह विधि लेज़ी लोडिंग का उपयोग करती है और एक प्रॉक्सी लौटाती है। यह डेटाबेस को केवल तभी हिट करती है जब ऑब्जेक्ट को एक्सेस किया जाता है और यदि रिकॉर्ड मौजूद नहीं है तो एक अपवाद उत्पन्न करती है।


3) हाइबरनेट के साथ काम करते समय आपको जिस चुनौतीपूर्ण स्थिति का सामना करना पड़ा, उसका वर्णन करें और बताएं कि आपने उसे कैसे हल किया।

उम्मीदवार से अपेक्षित: समस्या निवारण, डिबगिंग रणनीतियों और परसिस्टेंस लेयर ऑप्टिमाइज़ेशन पर विचार करने की क्षमता।

उदाहरण उत्तर: अपनी पिछली नौकरी में, मुझे अत्यधिक N+1 सेलेक्ट क्वेरी के कारण एक परफॉर्मेंस समस्या का सामना करना पड़ा। मैंने इसे कुछ और तरीके से हल किया। JOIN FETCH HQL में बदलाव करके और मैपिंग कॉन्फ़िगरेशन को बैच फ़ेचिंग के लिए समायोजित करके, हमने क्वेरी के प्रदर्शन में उल्लेखनीय सुधार किया और डेटाबेस पर भार कम किया।


4) आप हाइबरनेट में लेज़ी लोडिंग अपवादों को कैसे संभालते हैं?

उम्मीदवार से अपेक्षित: सेशन मैनेजमेंट और उससे जुड़ी आम गलतियों के बारे में जागरूकता।

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


5) हाइबरनेट किन-किन कैशिंग रणनीतियों का समर्थन करता है?

उम्मीदवार से अपेक्षित: प्रथम-स्तर, द्वितीय-स्तर और क्वेरी कैश की समझ।

उदाहरण उत्तर: हाइबरनेट प्रत्येक सत्र के लिए एक अनिवार्य प्रथम-स्तरीय कैश और एक वैकल्पिक द्वितीय-स्तरीय कैश प्रदान करता है जो प्रदाताओं जैसे का उपयोग करके सत्रों के बीच संस्थाओं को संग्रहीत कर सकता है। Ehcache या इन्फिनिस्पैन। यह एक क्वेरी कैश भी प्रदान करता है जो तेजी से पुनर्प्राप्ति के लिए क्वेरी परिणामों को संग्रहीत करने के लिए द्वितीय-स्तरीय कैश के साथ काम करता है।


6) मुझे उस समय के बारे में बताएं जब आपको किसी परसिस्टेंस-लेयर समस्या को हल करने के लिए किसी टीम के साथ सहयोग करना पड़ा हो।

उम्मीदवार से अपेक्षित: संचार कौशल, टीम वर्क और डेवलपर्स तथा डेटाबेस एडमिनिस्ट्रेटर (डीबीए) के साथ समन्वय स्थापित करने की क्षमता।

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


7) एकाधिक संबंधों वाले जटिल डोमेन मॉडल के लिए आप हाइबरनेट मैपिंग को कैसे डिज़ाइन करेंगे?

उम्मीदवार से अपेक्षित: एक-से-एक, एक-से-अनेक और अनेक-से-अनेक संबंधों को सोच-समझकर मैप करने की क्षमता।

उदाहरण उत्तर: मैं डोमेन मॉडल का विश्लेषण करके और प्रत्येक संबंध की कार्डिनैलिटी निर्धारित करके शुरुआत करता हूँ। मैं उपयुक्त एनोटेशन चुनता हूँ जैसे कि @OneToMany or @ManyToManyस्वामित्व को परिभाषित करें, और आवश्यकतानुसार कैस्केडिंग, फ़ेचिंग और जॉइन टेबल को कॉन्फ़िगर करें। लक्ष्य सटीक प्रतिनिधित्व और कुशल क्वेरी सुनिश्चित करना है।


8) यदि आपको पता चले कि उत्पादन में हिबरनेट अक्षम SQL क्वेरी उत्पन्न कर रहा है, तो आप क्या कदम उठाएंगे?

उम्मीदवार से अपेक्षित: समस्या-समाधान कौशल और प्रदर्शन अनुकूलन की मानसिकता।

उदाहरण उत्तर: मैं सबसे पहले जेनरेट की गई क्वेरीज़ का विश्लेषण करने के लिए SQL लॉगिंग को सक्षम करूँगा। इसके बाद, मैं मैपिंग को ऑप्टिमाइज़ करूँगा, फ़ेच टाइप को समायोजित करूँगा और HQL या क्राइटेरिया क्वेरीज़ को रिफ़ैक्टर करूँगा। यदि आवश्यक हो, तो मैं विशिष्ट परफ़ॉर्मेंस-महत्वपूर्ण कार्यों के लिए क्वेरी हिंट्स, बैच फ़ेचिंग या यहाँ तक कि नेटिव SQL का उपयोग करूँगा।


9) ट्रांजैक्शनल एप्लिकेशन में हिबरनेट का उपयोग करते समय आप डेटा की अखंडता और स्थिरता कैसे सुनिश्चित करते हैं?

उम्मीदवार से अपेक्षित: लेनदेन प्रबंधन और समवर्ती नियंत्रण की समझ।

उदाहरण उत्तर: मैं डिक्लेरेटिव ट्रांजैक्शन मैनेजमेंट, ऑप्टिमिस्टिक या पेसिमिस्टिक लॉकिंग स्ट्रेटेजी और प्रोपेगेशन लेवल के उचित उपयोग द्वारा निरंतरता सुनिश्चित करता हूँ। हिबरनेट जेपीए और स्प्रिंग के साथ अच्छी तरह से एकीकृत होता है, जो ट्रांजैक्शन सीमाओं पर बारीक नियंत्रण की अनुमति देता है।


10) एक ऐसे प्रोजेक्ट का वर्णन करें जिसमें हाइबरनेट ने महत्वपूर्ण भूमिका निभाई हो और आपने उसकी सफलता कैसे सुनिश्चित की।

उम्मीदवार से अपेक्षित: वास्तविक अनुभव को परियोजना के परिणामों से जोड़ने और स्वामित्व प्रदर्शित करने की क्षमता।

उदाहरण उत्तर: अपनी पिछली नौकरी में, मैंने एक बड़े पैमाने के ऑर्डर प्रोसेसिंग सिस्टम पर काम किया, जहाँ हिबरनेट प्राथमिक डेटा स्टोरेज फ्रेमवर्क था। मैंने कुशल एंटिटी मैपिंग डिज़ाइन करके, डेटाबेस लोड को कम करने के लिए कैशिंग लागू करके, और रखरखाव में सुधार लाने वाले पुन: प्रयोज्य DAO कंपोनेंट लिखकर सफलता सुनिश्चित की।

इस पोस्ट को संक्षेप में इस प्रकार लिखें: