Differenza tra le funzioni di Hibernate createCriteria, createQuery, createSQLQuery

Qualcuno può dirmi la differenza tra Hibernate:

  • createCriteria
  • createQuery
  • createSQLQuery

Qualcuno può dirmi quali dati restituiscono queste tre funzioni, cq indirizzarmi ad un link corretto e semplice per studiare queste funzioni di Hibernate?

Per creare una query nel framework ORM di Hibernate, esistono tre diversi tipi. I seguenti sono i tre modi per creare un’istanza di query:

  1. session.createQuery()
  2. session.createSQLQuery()
  3. session.createCriteria()

Guarda nei dettagli di ogni categoria in dettaglio.

 Session.createQuery() 

Il metodo createQuery () crea un object Query usando la syntax HQL. Per esempio:

 Query query = session.createQuery("from Student s where s.name like 'k%'"); 

 Session.createSQLQuery() 

Il metodo createSQLQuery () crea l’object Query utilizzando la syntax SQL nativa. Per esempio:

 Query query = session.createSQLQuery("Select * from Student"); 

 Session.createCriteria() 

Il metodo createCriteria () crea l’object Criteria per l’impostazione dei parametri di query. Questa è una funzione più utile per coloro che non vogliono scrivere la query in mano. È ansible specificare qualsiasi tipo di syntax complicata utilizzando l’API Criteri.

 Criteria criteria = session.createCriteria(Student.class); 
 1. session.createQuery()-> Can create query using HQL and can perform CRUD Operations 

Esempio:

  Query query = session.createQuery("from Student"); List list=quey.list(); Query query = session.createQuery("update Student where studentid=9"); int result=query.executeUpdate(); Query query = session.createQuery("delete Student where studentid="+ studentId); int result=query.executeUpdate(); Query query = session.createQuery("insert into Student where studentid="+ studentId); int result=query.executeUpdate(); 
  1. session.createSQLQuery () -> Può creare query usando SQL e può eseguire operazioni CRUD
  2. session.createCriteria () -> Può creare query utilizzando l’API Criteria e può eseguire solo operazioni di lettura
 ------------------------ PERSON ------------------------ **DB_Column**| **POJO** PERSON_ID | personID ------------------------ 

createQuery ()

stai usando i campi Pojo. Usando la syntax HQL.

 Query query = session.createQuery("from Person s where s.personID like 'A%'"); // returns: List persons = query.list(); 

createSQLQuery ()

Stai usando i campi Native | DB. Dopo aver cercato su google qualche sito, Came saprà che cancellerà anche la cache poiché ibernazione non sa cosa hai eseguito.

 Query query = session.createSQLQuery("select s.* from Person s where s.person_ID like 'A%'"); // returns: List persons = query.list();. 

createCriteria ()

  • Crea query SQL utilizzando l’object Criteria per l’impostazione dei parametri di query.
  • Utile quando si cambia DB.
  • Leggi solo query

     Criteria criteria = session.createCriteria(Person.class); criteria.add(Restrictions.like("personId", "A%")); List persons = criteria .list(); 

createSQLQuery – è per query SQL nativo che è selezionato da te con driver cfg jdbc o qualcos’altro.

createQuery – è per la query in ibernazione che ti fornisce query indipendenti che ti fanno girare su molti database usando API e altri vantaggi.

createCriteria – è meglio usare per le query semplici su db a causa della sua semplicità.

Spero che questo ti aiuta!