Sobes.tech
Senior

When should you use native SQL queries and when Hibernate?

sobes.tech AI

Answer from AI

Native SQL queries should be used when:

  • Complex or specific queries need to be executed that are difficult or inefficient to express through Hibernate (e.g., complex JOINs, window functions, database-specific features).
  • You want to optimize performance maximally and control the exact SQL that is executed.
  • Operations not supported by Hibernate are performed (e.g., calling stored procedures).

Hibernate is better used when:

  • You need to work quickly and conveniently with object-relational mapping without worrying about SQL details.
  • Cross-DBMS compatibility is required.
  • Automation of session management, caching, and transactions is important.

Example of a native query in Hibernate:

String sql = "SELECT * FROM users WHERE status = :status";
List<User> users = session.createNativeQuery(sql, User.class)
    .setParameter("status", "ACTIVE")
    .getResultList();