6.1 नामांकित प्रश्न

हाइबरनेट आपको सीधे कोड में प्रश्नों को स्टोर करने की अनुमति नहीं देता है। इसके बजाय, वह प्रश्नों को नाम देने और उन्हें एनोटेशन के रूप में अलग से संग्रहीत करने का सुझाव देता है। ठीक है, तो वांछित अनुरोध सीधे इसके नाम से लें। उदाहरण:

@org.hibernate.annotations.NamedQueries({
    @org.hibernate.annotations.NamedQuery(name = "Employee_FindById",
  	query = "from Employee where id = :id"),
    @org.hibernate.annotations.NamedQuery(name = "Employee_FindAllEmployes",
  	query = "from Employee"),
    @org.hibernate.annotations.NamedQuery(name = "Employee_UpdateEmployeeName",
  	query = "Update Employee set name = :newName where id = :id"),
...
})

किसी भी इकाई वर्ग से पहले एनोटेशन जोड़े जा सकते हैं: क्वेरी नाम किसी भी इकाई से बंधे नहीं हैं।

आप क्वेरी (क्वेरी) में विभिन्न पैरामीटर भी जोड़ सकते हैं:

@org.hibernate.annotations.NamedQuery(
  name = "Employee_ FindAllEmployes",
  query = "from Employee",
  timeout = 1,
  fetchSize = 10,
  cacheable = true,
  cacheMode = "GET"
)

ऐसे अनुरोधों का उपयोग करना बहुत आसान है - इसके लिए आपको createNamedQueryविधि के बजाय विधि का उपयोग करने की आवश्यकता है createQuery:


Query<Employee> query = session.createNamedQuery("Employee_FindAllEmployes", Employee.class);
List<Employee> resultLIst = query.list();

6.2 नेटिव क्वेरी

और एक और सरल लेकिन बहुत ही उपयोगी चीज है NativeQuery

यदि आप एचक्यूएल का उपयोग नहीं करना चाहते हैं, लेकिन इकाई मैपिंग के लिए हाइबरनेट का उपयोग करना चाहते हैं, तो आप अच्छे पुराने एसक्यूएल में प्रश्न लिख सकते हैं। कोई आपको सीमित नहीं करता।

createNativeQuery()ऐसा करने के लिए, आपको बस के बजाय विधि को कॉल करने की आवश्यकता है createQuery()


NativeQuery<Employee> query = session.createNativeQuery("select * from employee", Employee.class);
List<Employee> resultLIst = query.list();

तुम बस लिखो createNativeQueryऔर सब कुछ पहले की तरह काम करेगा। यह विधि NativeQuery प्रकार का एक ऑब्जेक्ट लौटाती है , जो क्वेरी वर्ग द्वारा समर्थित सभी विधियों का समर्थन करता है । आपके लिए कुछ नहीं बदलेगा।

इसके अतिरिक्त, नेटिव SQL क्वेरी को नामांकित क्वेरीज़ के रूप में भी संग्रहीत किया जा सकता है ।


@org.hibernate.annotations.NamedNativeQueries(
    @org.hibernate.annotations.NamedNativeQuery(name = "Employee_GetAll",
  	query = "select * from employee",
  	resultClass = Employee.class)
)

और हां, यहां उनके साथ काम करने के लिए कोड है:


NativeQuery<Employee> query = session.createNamedQuery("Employee_GetAll", Employee.class);
List<Employee> resultLIst = query.list();