Sobes.tech
Junior — Middle

What are the differences between services marked with the @Transactional annotation and regular services in terms of transaction management?

sobes.tech AI

Answer from AI

The @Transactional annotation in Java (usually in Spring) indicates that class methods or individual methods should be executed within a transaction. Main differences between services with @Transactional and regular services:

  • Transaction management: In services with @Transactional, Spring automatically opens, commits, or rolls back a transaction depending on the success of the method execution. In regular services, transactions need to be managed manually.

  • Operation atomicity: Methods with @Transactional guarantee that all operations within the method will either complete successfully or be rolled back in case of an error.

  • Configuration and proxying: Spring creates a proxy for services with @Transactional to inject transaction management logic.

  • Behavior on exceptions: By default, transactions are rolled back on unchecked exceptions (RuntimeException), which is implemented automatically.

Example:

@Service
@Transactional
public class UserService {
    public void createUser(User user) {
        userRepository.save(user); // operation within a transaction
        // if an exception is thrown here, changes will be rolled back
    }
}

In a regular service without @Transactional, transactions need to be managed manually via EntityManager or DataSource.

What are the differences between services marked with… - sobes.tech