Jānis Ošs’ Post

🚀 Writing Custom Database Queries with @Query and JPQL in Spring Data JPA Most Spring Boot devs start with derived query methods — and they're great. But when your query logic gets complex, derived methods become unreadable nightmares like findByFirstNameAndLastNameAndAgeGreaterThanAndStatusIn(...). That's where @Query + JPQL saves the day. 💡 @Query("SELECT u FROM User u WHERE u.email = :email AND u.active = true") Optional<User> findActiveUserByEmail(@Param("email") String email); JPQL (Java Persistence Query Language) operates on entity classes and their fields, not database tables and columns. This means your queries are portable across databases and benefit from compile-time safety. Key wins with @Query: ✅ Complex multi-condition queries stay readable ✅ JOINs, aggregations, and GROUP BY without stored procedures ✅ Named parameters with @Param keep code clean ✅ Modifying queries with @Modifying + @Transactional for bulk updates/deletes @Modifying @Transactional @Query("UPDATE User u SET u.active = false WHERE u.lastLogin < :cutoffDate") int deactivateInactiveUsers(@Param("cutoffDate") LocalDate cutoffDate); #Java #SpringBoot #BackendDevelopment #SpringDataJPA #JPQL #DatabaseQueries

To view or add a comment, sign in

Explore content categories