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 does LAZY fetch type mean in Spring Boot?
LAZY fetch type means related data is loaded only when it is accessed for the first time, not when the main entity is loaded.
Click to reveal answer
beginner
What does EAGER fetch type mean in Spring Boot?
EAGER fetch type means related data is loaded immediately with the main entity, even if it is not accessed right away.
Click to reveal answer
intermediate
Which fetch type can cause performance issues if many related entities are loaded unnecessarily?
EAGER fetch type can cause performance issues because it loads all related data immediately, even if not needed.
Click to reveal answer
intermediate
How does LAZY fetch type improve application performance?
LAZY fetch type improves performance by loading related data only when needed, reducing initial data load and memory use.
Click to reveal answer
intermediate
In which scenario is EAGER fetch type preferred?
EAGER fetch type is preferred when related data is always needed immediately with the main entity, avoiding extra database calls later.
Click to reveal answer
What happens when you use LAZY fetch type in Spring Boot?
AData loads randomly
BRelated data loads immediately with main entity
CNo data is loaded at all
DRelated data loads only when accessed
✗ Incorrect
LAZY fetch type delays loading related data until it is accessed.
Which fetch type loads all related entities immediately?
AEAGER
BDEFERRED
CNONE
DLAZY
✗ Incorrect
EAGER fetch type loads related entities immediately with the main entity.
What is a downside of using EAGER fetch type?
AData loads only on user request
BRelated data never loads
CSlower initial loading due to loading all related data
DIt causes syntax errors
✗ Incorrect
EAGER fetch can slow down loading because it fetches all related data upfront.
When is LAZY fetch type most useful?
AWhen related data is always needed
BWhen related data is rarely needed
CWhen no related data exists
DWhen you want to load everything immediately
✗ Incorrect
LAZY fetch is best when related data is not always required, saving resources.
Which annotation attribute controls fetch type in Spring Boot JPA?
Afetch
Bload
Ctype
Dmode
✗ Incorrect
The 'fetch' attribute in annotations like @OneToMany controls LAZY or EAGER loading.
Explain the difference between LAZY and EAGER fetch types in Spring Boot.
Think about when related data is loaded and how it affects speed.
You got /3 concepts.
Describe a situation where you would choose LAZY fetch type over EAGER.
Consider saving resources by loading data only when necessary.
You got /3 concepts.
Practice
(1/5)
1. What does the LAZY fetch type do in Spring Boot JPA?
easy
A. It disables loading of related entities completely.
B. It loads all related entities immediately with the main entity.
C. It delays loading related entities until they are accessed.
D. It loads related entities only during application startup.
Solution
Step 1: Understand fetch types in JPA
Fetch types control when related data is loaded from the database.
Step 2: Define LAZY fetch behavior
LAZY means related entities are loaded only when you access them, not immediately.
Final Answer:
It delays loading related entities until they are accessed. -> Option C
Quick Check:
LAZY = delayed loading [OK]
Hint: LAZY means wait to load until needed [OK]
Common Mistakes:
Confusing LAZY with EAGER loading
Thinking LAZY loads data immediately
Assuming LAZY disables loading
2. Which is the correct way to specify EAGER fetching on a JPA relationship in Spring Boot?
easy
A. @ManyToOne(fetch = FetchType.EAGER)
B. @OneToMany(fetch = FetchType.LAZY)
C. @OneToOne(fetch = FetchType.LAZY)
D. @ManyToMany(fetch = FetchType.LAZY)
Solution
Step 1: Identify correct annotation and fetch type
EAGER fetch type is set using fetch = FetchType.EAGER inside relationship annotations.
Step 2: Match correct relationship and fetch type
@ManyToOne(fetch = FetchType.EAGER) uses @ManyToOne(fetch = FetchType.EAGER), which is valid and correct.
Final Answer:
@ManyToOne(fetch = FetchType.EAGER) -> Option A
Quick Check:
EAGER fetch uses FetchType.EAGER [OK]
Hint: EAGER fetch uses FetchType.EAGER in annotation [OK]
Common Mistakes:
Using LAZY instead of EAGER for eager loading
Mixing relationship types with wrong fetch types
Forgetting to specify fetch attribute
3. Given the following code snippet, what will happen when order.getItems() is called if items is marked with fetch = FetchType.LAZY?
@Entity
class Order {
@OneToMany(fetch = FetchType.LAZY)
private List<Item> items;
}
Order order = entityManager.find(Order.class, 1L);
// No call to getItems() yet
medium
A. The items list is loaded immediately when the order is fetched.
B. The items list is never loaded, causing a null pointer exception.
C. The items list is loaded during application startup.
D. The items list is loaded only when getItems() is called.
Solution
Step 1: Understand LAZY fetch behavior on collections
With LAZY fetch, related collections like items are not loaded immediately.
Step 2: When is data loaded?
The data loads only when the getter getItems() is called, triggering the fetch.
Final Answer:
The items list is loaded only when getItems() is called. -> Option D
Quick Check:
LAZY fetch loads on access [OK]
Hint: LAZY loads collections only on getter call [OK]
Common Mistakes:
Assuming collections load immediately with LAZY
Expecting null instead of a proxy collection
Confusing LAZY with EAGER behavior
4. You have a @OneToMany(fetch = FetchType.LAZY) relationship, but you get a LazyInitializationException when accessing the collection outside a transaction. What is the likely cause?
medium
A. The fetch type should be LAZY, so this exception is unexpected.
B. The collection was accessed after the session was closed.
C. The entity was not annotated with @Entity.
D. The database connection is lost.
Solution
Step 1: Understand LazyInitializationException cause
This exception happens when a LAZY collection is accessed outside an open session or transaction.
Step 2: Identify session state during access
If the session is closed before accessing the collection, the proxy cannot load data, causing the exception.
Final Answer:
The collection was accessed after the session was closed. -> Option B
Quick Check:
LazyInitializationException = access after session close [OK]
Hint: Access LAZY data only inside open session/transaction [OK]
Common Mistakes:
Thinking fetch type alone prevents exceptions
Ignoring session lifecycle in JPA
Blaming database connection instead
5. You have an entity Author with a @OneToMany(fetch = FetchType.LAZY) relationship to Book. You want to display all authors with their books immediately to avoid multiple queries later. Which approach is best?
hard
A. Keep LAZY fetch and use a JPQL query with JOIN FETCH to load books eagerly.
B. Use native SQL queries only to load all data at once.
C. Load authors and books separately in two queries and merge in Java code.
D. Change the fetch type to EAGER on the relationship.
Solution
Step 1: Understand pros and cons of fetch types
Changing to EAGER can cause performance issues if not always needed.
Step 2: Use JOIN FETCH for selective eager loading
JPQL with JOIN FETCH loads related entities eagerly only when needed, avoiding multiple queries.
Step 3: Evaluate other options
Loading separately or using native queries is less efficient or more complex.
Final Answer:
Keep LAZY fetch and use a JPQL query with JOIN FETCH to load books eagerly. -> Option A
Quick Check:
JOIN FETCH = selective eager loading [OK]
Hint: Use JOIN FETCH query to eagerly load LAZY relations [OK]