Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What is the purpose of the JpaRepository interface in Spring Data JPA?
The JpaRepository interface provides CRUD (Create, Read, Update, Delete) operations and pagination support for JPA entities, simplifying database access without writing boilerplate code.
Click to reveal answer
intermediate
Which interface does JpaRepository extend to provide basic CRUD methods?
JpaRepository extends PagingAndSortingRepository, which itself extends CrudRepository. This means it inherits methods for CRUD and pagination.
Click to reveal answer
intermediate
Name two useful methods provided by JpaRepository that are not in CrudRepository.
1. findAll(Pageable pageable) for pagination. 2. flush() to synchronize the persistence context to the database immediately.
Click to reveal answer
beginner
How do you define a repository interface for an entity Book with an ID of type Long using JpaRepository?
You create an interface like this:
public interface BookRepository extends JpaRepository<Book, Long> {}
This gives you all CRUD and pagination methods for Book.
Click to reveal answer
beginner
True or False: You need to write SQL queries manually when using JpaRepository for basic CRUD operations.
False. JpaRepository provides built-in methods for basic CRUD operations, so you don't need to write SQL manually for those.
Click to reveal answer
What does JpaRepository primarily provide?
ASecurity features
BOnly SQL query execution
CUI components for Spring Boot
DCRUD operations and pagination support
✗ Incorrect
JpaRepository offers CRUD and pagination methods for JPA entities.
Which method is NOT part of JpaRepository?
AexecuteUpdate()
BfindAll()
Csave()
DdeleteById()
✗ Incorrect
executeUpdate() is not a method in JpaRepository. It is used in JPA Query API, not repository interfaces.
To add pagination support, which method would you use from JpaRepository?
AfindAll(Pageable pageable)
BfindById()
CsaveAll()
Dflush()
✗ Incorrect
findAll(Pageable pageable) returns a page of entities, enabling pagination.
What type parameters does JpaRepository require?
ANo type parameters
BEntity type only
CEntity type and ID type
DID type only
✗ Incorrect
JpaRepository needs the entity class and the type of its primary key.
Which interface is a direct parent of JpaRepository?
ACrudRepository
BPagingAndSortingRepository
CRepository
DEntityManager
✗ Incorrect
JpaRepository extends PagingAndSortingRepository, which extends CrudRepository.
Explain how JpaRepository simplifies database operations in Spring Boot applications.
Think about what common database tasks you avoid writing manually.
You got /4 concepts.
Describe how to create a repository interface for an entity using JpaRepository and what benefits it brings.
Focus on the interface declaration and what you get from it.
You got /4 concepts.
Practice
(1/5)
1. What is the primary purpose of the JpaRepository interface in Spring Boot?
easy
A. To provide built-in methods for database operations on entities
B. To define the structure of REST API endpoints
C. To manage application security and authentication
D. To handle frontend UI rendering
Solution
Step 1: Understand JpaRepository role
JpaRepository is designed to simplify database access by providing ready-made methods like save, findAll, and delete for entity classes.
Step 2: Compare with other options
Options A, C, and D relate to REST API endpoints, security, and UI rendering, which are not responsibilities of JpaRepository.
Final Answer:
To provide built-in methods for database operations on entities -> Option A
Quick Check:
JpaRepository = database helper [OK]
Hint: JpaRepository = database methods for entities [OK]
Common Mistakes:
Confusing JpaRepository with REST controllers
Thinking it manages security
Assuming it handles UI rendering
2. Which of the following is the correct way to declare a repository interface for an entity User with primary key type Long using JpaRepository?
easy
A. public interface UserRepository extends Repository<User> {}
B. public class UserRepository implements JpaRepository {}
C. public interface UserRepository extends JpaRepository {}
D. public interface UserRepository extends JpaRepository {}
Solution
Step 1: Check JpaRepository declaration syntax
JpaRepository is an interface that should be extended, not implemented. The generic parameters are , so is correct.
Step 2: Validate each option
public interface UserRepository extends JpaRepository {} correctly extends JpaRepository with . public class UserRepository implements JpaRepository {} incorrectly uses implements and class. public interface UserRepository extends JpaRepository {} swaps generic types. public interface UserRepository extends Repository<User> {} uses Repository, not JpaRepository.
Final Answer:
public interface UserRepository extends JpaRepository {} -> Option D
Quick Check:
Extend JpaRepository [OK]
Hint: Extend JpaRepository interface [OK]
Common Mistakes:
Using implements instead of extends
Swapping generic type order
Using Repository instead of JpaRepository
3. Given the following repository method declaration:
List<User> findByLastName(String lastName);
What will this method do when called with findByLastName("Smith")?
medium
A. Return all User entities with lastName exactly 'Smith'
B. Return all User entities with lastName containing 'Smith'
C. Return a single User entity with lastName 'Smith'
D. Throw a runtime error because the method is invalid
Solution
Step 1: Understand method naming convention
JpaRepository supports query derivation by method names. 'findByLastName' means find all entities where lastName equals the given parameter.
Step 2: Analyze return type and behavior
The return type is List<User>, so it returns all matching users with lastName exactly 'Smith'. It does not do partial matching or throw errors.
Final Answer:
Return all User entities with lastName exactly 'Smith' -> Option A
Quick Check:
findByProperty = exact match [OK]
Hint: findByX = exact match, returns list if List type [OK]
Common Mistakes:
Assuming it does partial matching
Expecting a single result instead of list
Thinking method is invalid without @Query
4. Consider this repository interface:
public interface ProductRepository extends JpaRepository {
List<Product> findByPriceGreaterThan(Double price);
}
Which of the following is a likely cause of a runtime error when calling findByPriceGreaterThan(null)?
medium
A. JpaRepository does not support comparison keywords like GreaterThan
B. Method name is invalid and causes compile error
C. Passing null causes a NullPointerException in the query generation
D. The return type List<Product> is incorrect
Solution
Step 1: Check method name and support
JpaRepository supports keywords like GreaterThan for query derivation, so method name is valid and compiles fine.
Step 2: Analyze passing null parameter
Passing null to a comparison query causes a NullPointerException at runtime because the query cannot compare with null.
Final Answer:
Passing null causes a NullPointerException in the query generation -> Option C
Quick Check:
Null param in comparison query = runtime error [OK]
Hint: Never pass null to comparison query methods [OK]
Common Mistakes:
Thinking method name is invalid
Assuming JpaRepository lacks GreaterThan support
Believing return type causes error
5. You want to add a custom method to your OrderRepository that finds all orders placed between two dates. Which of the following method signatures correctly uses JpaRepository naming conventions to achieve this?
hard
A. List<Order> findOrdersBetweenDates(LocalDate start, LocalDate end);
B. List<Order> findByOrderDateBetween(LocalDate start, LocalDate end);
C. List<Order> getOrdersByDateRange(LocalDate start, LocalDate end);
D. List<Order> findByOrderDateRange(LocalDate start, LocalDate end);
Solution
Step 1: Recall JpaRepository method naming rules
JpaRepository supports keywords like Between to filter values between two parameters. The property name must match entity field, here 'OrderDate'.
Step 2: Evaluate each method signature
List<Order> findByOrderDateBetween(LocalDate start, LocalDate end); uses 'findByOrderDateBetween' which is correct. Options B, C, and D use unsupported or incorrect keywords and will not work.
Final Answer:
List<Order> findByOrderDateBetween(LocalDate start, LocalDate end); -> Option B
Quick Check:
Use Between keyword for range queries [OK]
Hint: Use 'Between' keyword for range queries in method name [OK]
Common Mistakes:
Using unsupported keywords like 'Range' or 'BetweenDates'
Not matching property name exactly
Trying to create custom method without @Query but wrong name