Where to Put @Transactional in Spring Boot

🔹 Spring Tip: Where to Put @Transactional Many developers wonder: Should @Transactional go on repositories or service methods? Service Layer ✅ @Service public class UserService { @Transactional public void transferMoney(...) { ... } } Wraps multiple repository calls in one atomic transaction Ensures business logic consistency Supports propagation, isolation, read-only flags, rollback rules Repository Layer ❌ (usually) @Repository public interface UserRepository extends JpaRepository<User, Long> { @Transactional Optional<User> findById(Long id); } Each call starts its own transaction Adds overhead: dirty checking, flush, commit/rollback Breaks atomicity if multiple repo calls are made separately 💡 Best practice: Annotate service methods, not repositories. Use @Transactional(readOnly = true) for read-only queries. Profile first — small changes can give huge performance gains. #SpringBoot #Java #BackendEngineering #Transactions #JPA #Performance #SpringTips

To view or add a comment, sign in

Explore content categories