6.1 பெயரிடப்பட்ட வினவல்கள்

வினவல்களை நேரடியாக குறியீட்டில் சேமிக்காமல் இருக்க Hibernate உங்களை அனுமதிக்கிறது. மாறாக, வினவல்களின் பெயர்களைக் கொடுத்து அவற்றை சிறுகுறிப்புகளாக தனித்தனியாகச் சேமிக்குமாறு அவர் பரிந்துரைக்கிறார். சரி, பின்னர் விரும்பிய கோரிக்கையை அதன் பெயரால் நேரடியாக எடுத்துக் கொள்ளுங்கள். உதாரணமாக:

@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 ஐப் பயன்படுத்த விரும்பவில்லை, ஆனால் நிறுவன மேப்பிங்கிற்கு Hibernate ஐப் பயன்படுத்த விரும்பினால், நீங்கள் நல்ல பழைய SQL இல் வினவல்களை எழுதலாம். யாரும் உங்களை மட்டுப்படுத்துவதில்லை.

createNativeQuery()இதைச் செய்ய, நீங்கள் முறைக்கு பதிலாக அழைக்க வேண்டும் createQuery().


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

நீங்கள் எழுதுங்கள் createNativeQuery, எல்லாம் முன்பு போலவே செயல்படும். இந்த முறை நேட்டிவ் க்யூரி வகையின் ஒரு பொருளை வழங்குகிறது , இது வினவல் வகுப்பு ஆதரிக்கும் அனைத்து முறைகளையும் ஆதரிக்கிறது . உங்களுக்காக எதுவும் மாறாது.

கூடுதலாக, நேட்டிவ் 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();