0
0
Spring Bootframework~20 mins

Transaction management with @Transactional in Spring Boot - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Transactional Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
component_behavior
intermediate
2:00remaining
What happens when a RuntimeException is thrown inside a @Transactional method?
Consider a Spring Boot service method annotated with @Transactional. If this method throws a RuntimeException, what will be the outcome regarding the transaction?
Spring Boot
public void updateData() {
  // some database operations
  if(someCondition) {
    throw new RuntimeException("Error occurred");
  }
}
AThe transaction commits successfully despite the exception.
BThe transaction is rolled back automatically.
CThe transaction is paused and resumed after handling the exception.
DThe transaction commits but logs the exception.
Attempts:
2 left
💡 Hint
Think about Spring's default rollback behavior for unchecked exceptions.
📝 Syntax
intermediate
2:00remaining
Which @Transactional annotation usage is correct to rollback on a checked exception?
You want a transaction to rollback when a checked exception IOException occurs. Which annotation usage is correct?
A@Transactional(rollbackFor = IOException.class)
B@Transactional(noRollbackFor = IOException.class)
C@Transactional(rollbackOn = IOException.class)
D@Transactional(rollback = IOException.class)
Attempts:
2 left
💡 Hint
Check the exact attribute name for rollback exceptions in @Transactional.
🔧 Debug
advanced
2:00remaining
Why does the transaction not rollback when a checked exception is thrown?
A method annotated with @Transactional throws a checked exception, but the transaction commits instead of rolling back. What is the most likely cause?
Spring Boot
public void process() throws IOException {
  // database update
  throw new IOException("Checked exception");
}
AThe exception is caught and handled inside the method.
BThe method is missing the <code>@Transactional</code> annotation.
CThe database connection is not configured for transactions.
DSpring does not rollback transactions for checked exceptions by default.
Attempts:
2 left
💡 Hint
Recall Spring's default rollback rules for checked vs unchecked exceptions.
🧠 Conceptual
advanced
2:00remaining
What is the effect of calling a @Transactional method from another method in the same class?
In Spring Boot, if a @Transactional method is called from another method within the same class, what happens to the transaction behavior?
AThe transaction is ignored and an error is thrown.
BThe transaction starts and commits normally.
CThe transaction is not applied because Spring proxies do not intercept internal method calls.
DThe transaction is applied twice causing nested transactions.
Attempts:
2 left
💡 Hint
Think about how Spring AOP proxies work with self-invocation.
state_output
expert
3:00remaining
What is the final database state after nested @Transactional methods with different propagation?
Given two methods: outerMethod() annotated with @Transactional(propagation = Propagation.REQUIRED) and innerMethod() annotated with @Transactional(propagation = Propagation.REQUIRES_NEW). If innerMethod() throws a RuntimeException but outerMethod() catches it and completes normally, what is the final state of the database?
Spring Boot
public void outerMethod() {
  try {
    innerMethod();
  } catch (RuntimeException e) {
    // handle exception
  }
  // continue with other DB operations
}

@Transactional(propagation = Propagation.REQUIRES_NEW)
public void innerMethod() {
  // DB insert
  throw new RuntimeException("Fail");
}
AChanges in innerMethod are rolled back; changes in outerMethod are committed.
BAll changes from both methods are rolled back.
CAll changes from both methods are committed.
DChanges in innerMethod are committed; outerMethod changes are rolled back.
Attempts:
2 left
💡 Hint
Consider how REQUIRES_NEW creates a separate transaction independent of the outer one.