Alte tipuri de cereri

Disponibil

6.1 Interogări denumite

Hibernare vă permite să nu stocați interogări direct în cod. În schimb, el sugerează să dea nume interogărilor și să le stocheze separat ca adnotări. Ei bine, atunci ia cererea dorită direct după numele ei. Exemplu:

@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"),
...
})

Adnotările pot fi adăugate înaintea oricărei clase de Entitate: numele de interogare nu sunt legate de nicio Entitate.

De asemenea, puteți adăuga diferiți parametri la interogare (interogare):

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

Utilizarea unor astfel de solicitări este foarte simplă - pentru aceasta trebuie să utilizați o metodă createNamedQueryîn loc de o metodă createQuery:

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

6.2 NativeQuery

Și un alt lucru simplu, dar foarte util este NativeQuery .

Dacă nu doriți să utilizați HQL, dar doriți să utilizați Hibernate pentru maparea entităților, atunci puteți scrie interogări în SQL vechi bun. Nimeni nu te limitează.

Pentru a face acest lucru, trebuie doar să apelați metoda createNativeQuery(), în loc de createQuery().

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

Doar scrie createNativeQueryși totul va funcționa ca înainte. Această metodă returnează un obiect de tip NativeQuery , care acceptă toate metodele pe care le acceptă clasa Query . Nimic nu se va schimba pentru tine.

În plus, Interogarea SQL nativă poate fi stocată și ca Interogări denumite .

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

Și, desigur, iată codul pentru a lucra cu ei:

NativeQuery<Employee> query = session.createNamedQuery("Employee_GetAll", Employee.class);
List<Employee> resultLIst = query.list();
Comentarii
  • Popular
  • Nou
  • Vechi
Trebuie să fii conectat pentru a lăsa un comentariu
Această pagină nu are încă niciun comentariu