Quick Start
Learn essential Spring Data JPA operations and query patterns for effective database work with Spring Boot. This Quick Start teaches core Spring Data JPA concepts.
🎯 What You’ll Learn
By the end of this tutorial, you’ll understand:
- Repository methods and query derivation
- Custom queries with @Query
- Relationships and associations
- Pagination and sorting
📋 Prerequisites
- Spring Data JPA installed (see Initial Setup)
- Basic Java and Spring Boot knowledge
📊 Repository Methods
Built-in Methods
// JpaRepository provides:
userRepository.findAll();
userRepository.findById(1L);
userRepository.save(user);
userRepository.delete(user);
userRepository.count();Query Method Derivation
public interface UserRepository extends JpaRepository<User, Long> {
List<User> findByName(String name);
List<User> findByAgeGreaterThan(Integer age);
List<User> findByNameAndAge(String name, Integer age);
List<User> findByEmailContaining(String emailPart);
List<User> findByOrderByNameAsc();
}🔍 Custom Queries
JPQL Queries
public interface UserRepository extends JpaRepository<User, Long> {
@Query("SELECT u FROM User u WHERE u.email LIKE %:domain%")
List<User> findByEmailDomain(@Param("domain") String domain);
@Query("SELECT u FROM User u WHERE u.age > :age ORDER BY u.name")
List<User> findUsersOlderThan(@Param("age") Integer age);
}Native SQL Queries
@Query(value = "SELECT * FROM users WHERE age > ?1", nativeQuery = true)
List<User> findUsersOlderThanNative(Integer age);🔗 Relationships
One-to-Many
@Entity
public class User {
@Id
@GeneratedValue
private Long id;
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL)
private List<Post> posts;
}
@Entity
public class Post {
@Id
@GeneratedValue
private Long id;
@ManyToOne
@JoinColumn(name = "user_id")
private User user;
}Many-to-Many
@Entity
public class User {
@ManyToMany
@JoinTable(
name = "user_roles",
joinColumns = @JoinColumn(name = "user_id"),
inverseJoinColumns = @JoinColumn(name = "role_id")
)
private Set<Role> roles;
}📄 Pagination and Sorting
// Pagination
Pageable pageable = PageRequest.of(0, 10);
Page<User> users = userRepository.findAll(pageable);
// Sorting
Sort sort = Sort.by(Sort.Direction.DESC, "name");
List<User> users = userRepository.findAll(sort);
// Both
Pageable pageable = PageRequest.of(0, 10, Sort.by("name").ascending());
Page<User> users = userRepository.findAll(pageable);✅ Next Steps
You now understand Spring Data JPA essentials! To deepen your knowledge:
- Try the examples: Create repositories and execute operations
- Explore By Example: Spring Data JPA By Example
🎯 Self-Assessment
After completing this Quick Start, you should be able to:
- Use built-in repository methods
- Create query methods with derivation
- Write custom JPQL and native queries
- Define entity relationships
- Implement pagination and sorting
Last updated