File tree Expand file tree Collapse file tree 3 files changed +95
-1
lines changed
persistence-modules/spring-boot-persistence-5
src/test/java/com/baeldung/rollbackonly Expand file tree Collapse file tree 3 files changed +95
-1
lines changed Original file line number Diff line number Diff line change 1+ @startuml Nested Transactions in publishArticle_v2
2+
3+ participant "Client" as C
4+ participant "Blog" as B
5+ participant "ArticleRepo" as AR
6+ participant "AuditService" as AS
7+ database "Database" as DB
8+
9+ C -> B : publishArticle_v2()
10+ activate B
11+ note right of B : @Transactional
12+ B -> DB : Begin TX1
13+ activate DB #LightBlue
14+
15+ B -> AR : save()
16+ activate AR
17+ AR -> DB : INSERT article
18+ AR --> B :
19+ deactivate AR
20+
21+ B -> AS : saveAudit()
22+ activate AS
23+ note right of AS : @Transactional\n(REQUIRES_NEW)
24+ AS -> DB : Begin TX2
25+ activate DB #LightGreen
26+
27+ AS -> DB : INSERT audit
28+
29+ AS -> DB : Commit TX2
30+ deactivate DB
31+ AS --> B :
32+ deactivate AS
33+
34+ B -> DB : Commit / Rollback TX1
35+ deactivate DB
36+ B --> C :
37+ deactivate B
38+
39+ note over DB
40+ TX1: Article save
41+ TX2: Audit save (independent, always commits)
42+ end note
43+
44+ @enduml
Original file line number Diff line number Diff line change 1+ @startuml Sequential Transactions in publishArticle_v3
2+
3+ participant "Client" as C
4+ participant "Blog" as B
5+ participant "TransactionTemplate" as TT
6+ participant "ArticleRepo" as AR
7+ participant "AuditRepo" as AuR
8+ database "Database" as DB
9+
10+ C -> B : publishArticle_v3()
11+ activate B
12+
13+ B -> TT : execute()
14+ activate TT
15+ TT -> DB : Begin TX1
16+ activate DB #LightBlue
17+
18+ TT -> AR : save()
19+ activate AR
20+ AR -> DB : INSERT article
21+ AR --> TT
22+ deactivate AR
23+
24+ TT -> DB : Commit / Rollback TX1
25+ deactivate DB
26+ TT --> B
27+ deactivate TT
28+
29+
30+ B -> DB : Begin TX2
31+ activate DB #LightGreen
32+
33+ B -> AuR : save()
34+ activate AuR
35+ AuR -> DB : INSERT audit (FAILURE)
36+ AuR --> B :
37+ deactivate AuR
38+
39+ B -> DB : Commit TX2
40+ deactivate DB
41+
42+ B --> C :
43+ deactivate B
44+
45+ note over DB
46+ TX1 completes (commit or rollback) BEFORE TX2 begins
47+ TX2: Independent transaction for FAILURE audit
48+ end note
49+
50+ @enduml
Original file line number Diff line number Diff line change @@ -51,7 +51,7 @@ void whenPublishingAnInvalidArticle_thenThrowsUnexpectedRollbackException() {
5151 assertThatThrownBy (() -> articleService .publishArticle (
5252 new Article ("Test Article" , null )))
5353 .isInstanceOf (UnexpectedRollbackException .class )
54- .hasMessageContaining ("Transaction silently rolled back because it has been marked as rollback-only" );
54+ .hasMessageContaining ("marked as rollback-only" );
5555
5656 assertThat (auditRepo .findAll ())
5757 .isEmpty ();
You can’t perform that action at this time.
0 commit comments