JPQL (Java/Jakarta Persistence Query Language)
- Avoiding SQL inside Java logic.
- Object-oriented query language for JPA.
- Works with entities and their fields, not database tables/columns.
- Portable across databases.
- Converted to SQL by JPA/Hibernate before executing in the database.
Rules for creating JPQL
-
select all
-
select specific field
Here(JPQL perspective)
User = Entity class name (not table name). id, name = Entity property names (not column names).
Example
Repository
public interface UserRepository extends JpaRepository<User, Integer> {
@Query(value = "SELECT u FROM User u ", nativeQuery = false)
List<User> getUserJpql();
}
public void getUserJpqlMethod() {
List<User> users = userRepository.getUserJpql();
users.forEach(u -> {
System.out.println(u.getId() + " " + u.getName() + " " + u.getEmail());
});
}
JPQL: SELECT u FROM User u
SQL : SELECT * FROM USER
Hibernate: select u1_0.uid,u1_0.email,u1_0.name from user u1_0
Github Code : CRUD Operation