Erik
Erik

Reputation: 12140

Nested @Transactional

Is it possible to nest @Transactional annotated methods in spring? Consider something like this:

@Transactional
public void a() {
    obj.b();
}

@Transactional
public void b() {
    // ... 
}

What happens in such a case if I rollback in b() and rollback in a() ?

Upvotes: 28

Views: 22715

Answers (1)

Kevin Bowersox
Kevin Bowersox

Reputation: 94489

The second @Transactional annotation on method b() is not required because by default @Transactional has a propagation of REQUIRED, therefore methods called by method a() will be transactional. If you are looking to start a new transaction within a method called by method a() you will need to modify the propagation rules. Read about Transaction Propagation.

Upvotes: 47

Related Questions