Sobes.tech
Junior — Middle
103

Czy możesz wyjaśnić, co oznacza użycie natywnych zapytań SQL w adnotacji @Query w Hibernate?

Odpowiedź od AI

sobes.tech AI

W Hibernate adnotacja @Query pozwala na pisanie zapytań do pobierania danych. Domyślnie jest to HQL (Hibernate Query Language) — obiektowo zorientowany język zapytań. Jednak jeśli chcesz użyć natywnego zapytania SQL, możesz wskazać parametr nativeQuery = true w @Query.

Oznacza to, że zapytanie zostanie wykonane bezpośrednio jako SQL, bez konwersji przez Hibernate. Jest to przydatne, gdy trzeba użyć funkcji specyficznych dla bazy danych lub złożonych zapytań, które trudno wyrazić w HQL.

Przykład:

@Query(value = "SELECT * FROM users WHERE status = ?1", nativeQuery = true)
List<User> findUsersByStatusNative(String status);

Tutaj users to nazwa tabeli w bazie danych, a nie nazwa encji. To zapytanie zostanie wykonane bezpośrednio w bazie.