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();

६.२ नेटिव्हक्वेरी

आणि दुसरी साधी पण अतिशय उपयुक्त गोष्ट म्हणजे NativeQuery .

जर तुम्हाला HQL वापरायचे नसेल, परंतु एंटिटी मॅपिंगसाठी हायबरनेट वापरायचे असेल, तर तुम्ही चांगल्या जुन्या SQL मध्ये क्वेरी लिहू शकता. तुम्हाला कोणीही मर्यादा घालत नाही.

हे करण्यासाठी, तुम्हाला 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();