Más típusú kérések

Elérhető

6.1 Elnevezett lekérdezések

A hibernálás lehetővé teszi, hogy a lekérdezéseket ne tárolja közvetlenül a kódban. Ehelyett azt javasolja, hogy adjon nevet a lekérdezéseknek, és tárolja azokat külön megjegyzésként. Nos, akkor vegye át a kívánt kérést közvetlenül a neve alapján. Példa:

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

Annotációk hozzáadhatók bármely entitásosztály elé: a lekérdezések nevei nincsenek kötve egyetlen entitáshoz sem.

Különféle paramétereket is hozzáadhat a lekérdezéshez (query):

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

createNamedQueryAz ilyen kérések használata nagyon egyszerű - ehhez metódus helyett metódust kell használnia createQuery:

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

6.2 NativeQuery

És egy másik egyszerű, de nagyon hasznos dolog a NativeQuery .

Ha nem HQL-t akarunk használni, hanem hibernálást szeretnénk használni az entitásleképezéshez, akkor a jó öreg SQL-ben írhatunk lekérdezéseket. Senki nem korlátoz téged.

Ehhez csak a metódust kell meghívnia a createNativeQuery()helyett createQuery().

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

Csak írj createNativeQuery, és minden úgy fog működni, mint korábban. Ez a metódus egy NativeQuery típusú objektumot ad vissza , amely támogatja a Query osztály által támogatott összes metódust . Semmi sem fog változni neked.

Ezenkívül a natív SQL-lekérdezések elnevezett lekérdezésekként is tárolhatók .

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

És természetesen itt a kód a velük való munkavégzéshez:

NativeQuery<Employee> query = session.createNamedQuery("Employee_GetAll", Employee.class);
List<Employee> resultLIst = query.list();
Hozzászólások
  • Népszerű
  • Új
  • Régi
Hozzászólás írásához be kell jelentkeznie
Ennek az oldalnak még nincsenek megjegyzései