Prev Next

Spring / Spring Boot 4 Basics Interview Questions

What is Spring Boot's transaction management with @Transactional?

Spring Boot 4 auto-configures transaction management when a data source is on the classpath. The @Transactional annotation declaratively wraps methods in a database transaction, with Spring AOP managing commit and rollback.

// Service with transaction management:
@Service
public class OrderService {

    private final OrderRepository orderRepo;
    private final InventoryRepository inventoryRepo;
    private final EventPublisher events;

    // Default: propagation=REQUIRED, isolation=DEFAULT, rollbackFor=RuntimeException
    @Transactional
    public Order placeOrder(CreateOrderRequest request) {
        // All operations in one transaction:
        Order order = orderRepo.save(new Order(request));
        inventoryRepo.reserveStock(request.productId(), request.quantity());
        events.publish(new OrderPlacedEvent(order.getId()));
        return order;
        // Commits on successful return
        // Rolls back on RuntimeException
    }

    // Read-only transaction (performance optimisation):
    @Transactional(readOnly = true)
    public Optional<Order> findById(String id) {
        return orderRepo.findById(id);
        // Hibernate skips dirty checking for read-only transactions
    }

    // Custom rollback rules:
    @Transactional(rollbackFor = {BusinessException.class, IOException.class})
    public void processPayment(String orderId) throws IOException {
        // Rolls back on checked IOException too
    }

    // Propagation types:
    @Transactional(propagation = Propagation.REQUIRES_NEW)
    public void auditLog(String message) {
        // Always runs in its own NEW transaction,
        // suspending any existing outer transaction
        auditRepo.save(new AuditEntry(message));
    }
}

Key @Transactional propagation values
PropagationBehaviour
REQUIRED (default)Join existing transaction; create new if none
REQUIRES_NEWAlways create a new transaction; suspend existing
SUPPORTSJoin existing if present; run non-transactional if none
NOT_SUPPORTEDRun non-transactional; suspend existing
NEVERMust run non-transactionally; error if transaction exists
MANDATORYMust join existing; error if no transaction exists
What is the default rollback behaviour of @Transactional in Spring Boot 4?
What does @Transactional(readOnly = true) optimise in Spring Boot 4 with Hibernate?

More Related questions...

What is Spring Boot 4 and when was it released? What is the complete modularisation of Spring Boot 4 and why does it matter? What is the Java version baseline in Spring Boot 4 and what Java features does it unlock? What is Jakarta EE 11 and what changes does it bring in Spring Boot 4? How does Spring Boot 4 auto-configuration work and what is the new @AutoConfiguration annotation? What is native API versioning in Spring Boot 4 and how do you use it? What are JSpecify nullability annotations in Spring Boot 4 and why are they important? What changed with Jackson in Spring Boot 4 and what are the migration considerations? What are @Retryable and @ConcurrencyLimit in Spring Boot 4 and how do they work? What are HTTP Service Clients in Spring Boot 4 and how do you define them? What are the key breaking changes removed in Spring Boot 4 that were deprecated in Boot 3? How does Spring Boot 4 handle dependency injection and what are the core stereotypes? What is Spring Boot's application.properties / application.yml and how does configuration work? What are Spring Boot profiles and how do you use them for environment-specific configuration? How does Spring Boot 4 testing work with @SpringBootTest and test slices? What is Spring Boot Actuator and what does it provide in Boot 4? How does Spring Boot 4 handle data access with Spring Data JPA? What is Spring Security in Spring Boot 4 and what are the key Boot 4 changes? What is the Spring Boot starter parent (POM) and how do you set up a Spring Boot 4 project? What is @SpringBootApplication and what does it combine? How do you build REST APIs with Spring Boot 4 using @RestController? How does Bean Validation work with Spring Boot 4? What is Spring Boot's embedded server and how do you configure it? What is Spring Boot's transaction management with @Transactional? What is Spring Boot's caching abstraction and how do you use it? What is Spring Boot's observability stack in Boot 4 with Micrometer and OpenTelemetry? How does Spring Boot 4 support GraalVM native images? What is Spring WebFlux and reactive programming in Spring Boot 4? What is Spring Boot's exception handling with @RestControllerAdvice? How do you use Spring Data MongoDB and other NoSQL stores in Spring Boot 4? How does Spring Boot 4 handle async processing with @Async? What is Spring Boot's externalized configuration with @Value and @ConfigurationProperties? What is Spring Boot's messaging support with Kafka in Boot 4? How do you schedule tasks in Spring Boot 4 with @Scheduled? What is Spring AI and how does it integrate with Spring Boot 4? How does Spring Boot 4 handle logging configuration? What is Spring Boot 4 migration from Boot 3: complete checklist and common pitfalls? What is Spring Boot DevTools and how does it improve development productivity? How does Spring Boot 4 support containerised deployments with Docker? What is the Spring Boot 4 vs Spring Boot 3 comparison and what are the key takeaways?
Show more question and Answers...


Comments & Discussions