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 .

మీరు 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();