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.