Bird
Raised Fist0
Spring Bootframework~10 mins

CRUD methods (save, findById, findAll, delete) in Spring Boot - Step-by-Step Execution

Choose your learning style10 modes available

Start learning this pattern below

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
Concept Flow - CRUD methods (save, findById, findAll, delete)
Start CRUD Operation
Choose Method
save
Perform DB Action
Return Result
End
This flow shows how a CRUD method is chosen and executed, performing a database action and returning the result.
Execution Sample
Spring Boot
repository.save(entity);
repository.findById(id);
repository.findAll();
repository.delete(entity);
These lines show calling the four main CRUD methods on a Spring Data repository.
Execution Table
StepMethod CalledInputActionOutput/Result
1saveentity with id=nullInsert entity into DBentity with generated id returned
2findByIdid=5Search DB for entity with id=5Optional<Entity> found or empty
3findAllnoneRetrieve all entities from DBList<Entity> with all records
4deleteentity with id=5Remove entity with id=5 from DBvoid (no return)
5EndN/ANo more operationsProcess complete
💡 All CRUD operations complete, no further actions.
Variable Tracker
VariableStartAfter saveAfter findByIdAfter findAllAfter deleteFinal
entityid=nullid=10 (generated)id=10id=10deleteddeleted
id555555
resultnullentity with id=10Optional<Entity>List<Entity>voidvoid
Key Moments - 3 Insights
Why does save return an entity with an id when the input entity had id=null?
Because save inserts the entity into the database and generates a new id, which it sets on the returned entity (see execution_table step 1).
What does findById return if no entity matches the id?
It returns an empty Optional, indicating no entity was found (see execution_table step 2 output).
Does delete return any value after removing an entity?
No, delete returns void because it only performs the removal action (see execution_table step 4).
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the output of the save method at step 1?
AList of entities
BNull
CEntity with generated id
DVoid
💡 Hint
Check the Output/Result column at step 1 in the execution_table.
At which step does the method return a list of all entities?
AStep 2
BStep 3
CStep 4
DStep 1
💡 Hint
Look for the method findAll in the execution_table and see its output.
If the entity to delete does not exist, what would likely happen?
Adelete returns void but no entity is removed
Bdelete returns the entity
Cdelete throws an exception
Ddelete returns a list
💡 Hint
Refer to the delete method behavior in the execution_table and typical Spring Data behavior.
Concept Snapshot
CRUD methods in Spring Boot:
- save(entity): inserts or updates entity, returns saved entity with id
- findById(id): returns Optional with entity or empty
- findAll(): returns list of all entities
- delete(entity): removes entity, returns void
Use repository interface methods for DB actions.
Full Transcript
This visual execution shows the four main CRUD methods in Spring Boot repositories: save, findById, findAll, and delete. The flow starts by choosing a method, performing the database action, and returning the result. The execution table traces each method call with inputs, actions, and outputs. Variables like entity and id change state as methods run. Key moments clarify common confusions such as save generating an id, findById returning Optional, and delete returning void. The quiz tests understanding of outputs and method behaviors. This helps beginners see how CRUD methods work step-by-step in Spring Boot.

Practice

(1/5)
1. Which Spring Boot repository method is used to add a new entity or update an existing one in the database?
easy
A. save()
B. findById()
C. delete()
D. findAll()

Solution

  1. Step 1: Understand the purpose of save()

    The save() method is designed to add a new entity or update an existing one in the database.
  2. Step 2: Compare with other methods

    findById() and findAll() are for reading data, and delete() is for removing data, so they do not add or update.
  3. Final Answer:

    save() -> Option A
  4. Quick Check:

    Add or update data = save() [OK]
Hint: Remember: save = add or update data [OK]
Common Mistakes:
  • Confusing save() with findById()
  • Thinking delete() adds data
  • Using findAll() to save data
2. Which of the following is the correct syntax to find an entity by its ID using Spring Boot's repository?
easy
A. repository.findById(id);
B. repository.save(id);
C. repository.delete(id);
D. repository.findAll(id);

Solution

  1. Step 1: Identify the method to find by ID

    The method findById(id) is used to retrieve an entity by its ID.
  2. Step 2: Check syntax correctness

    repository.findById(id); is the correct syntax. Other methods do not accept an ID to find an entity.
  3. Final Answer:

    repository.findById(id); -> Option A
  4. Quick Check:

    Find by ID syntax = repository.findById(id) [OK]
Hint: Use findById(id) to get one entity by its ID [OK]
Common Mistakes:
  • Using save() to find an entity
  • Passing ID to findAll(), which takes no parameters
  • Using delete() to find data
3. Given the following code snippet, what will allUsers.size() return if the database has 3 user records?
List<User> allUsers = userRepository.findAll();
int count = allUsers.size();
medium
A. 0
B. 3
C. 1
D. null

Solution

  1. Step 1: Understand findAll() behavior

    The findAll() method returns a list of all entities in the database.
  2. Step 2: Count the number of records returned

    If the database has 3 user records, allUsers will contain 3 elements, so allUsers.size() returns 3.
  3. Final Answer:

    3 -> Option B
  4. Quick Check:

    findAll() returns all records count = 3 [OK]
Hint: findAll() returns all records as a list [OK]
Common Mistakes:
  • Assuming findAll() returns null if no records
  • Confusing size() with findById() result
  • Thinking findAll() returns a single entity
4. What is wrong with this code snippet if it throws a compilation error?
userRepository.delete(5);

Assuming delete expects an entity object, not an ID.
medium
A. The ID must be a string, not an integer.
B. The method delete does not exist in Spring Boot repositories.
C. You must pass an entity object, not an ID, to delete.
D. You should use deleteById(5) instead to delete by ID.

Solution

  1. Step 1: Understand delete method signature

    The delete method expects an entity object, not just an ID.
  2. Step 2: Use correct method to delete by ID

    To delete by ID, use deleteById(id) method instead of delete(id).
  3. Final Answer:

    You should use deleteById(5) instead to delete by ID. -> Option D
  4. Quick Check:

    Delete by ID = deleteById(id) [OK]
Hint: Use deleteById(id) to remove by ID, not delete(entity) [OK]
Common Mistakes:
  • Passing ID to delete() instead of entity
  • Assuming delete() accepts ID directly
  • Using wrong data type for ID
5. You want to update a user's email in the database using Spring Boot. Which sequence of repository methods correctly achieves this?
// Assume userId and newEmail are given
Optional<User> userOpt = userRepository.findById(userId);
if (userOpt.isPresent()) {
    User user = userOpt.get();
    user.setEmail(newEmail);
    // What next?
}
hard
A. Call userRepository.delete(user); then save(user);.
B. Call userRepository.findAll(); to refresh the list.
C. Call userRepository.save(user); to update the user.
D. No need to call any method; changes auto-save.

Solution

  1. Step 1: Retrieve the user entity by ID

    The code uses findById(userId) to get the user object.
  2. Step 2: Update the user and save changes

    After setting the new email, calling save(user) updates the database record.
  3. Final Answer:

    Call userRepository.save(user); to update the user. -> Option C
  4. Quick Check:

    Update data = findById + modify + save [OK]
Hint: Update entity fields then call save() to persist changes [OK]
Common Mistakes:
  • Assuming changes auto-save without calling save()
  • Deleting before saving to update
  • Using findAll() to update a single record