11 KiB
title, source_type, url, archive_url, related_branches, related_projects, tags, status, confidence, created
| title | source_type | url | archive_url | related_branches | related_projects | tags | status | confidence | created | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| company-tech-blog / Axon Framework TransactionManager interface + SpringTransactionManager adapter (AxonIQ API Docs) | company-tech-blog | https://apidocs.axoniq.io/3.3/org/axonframework/common/transaction/TransactionManager.html |
|
|
|
raw | high | 2026-05-28 |
Axon Framework TransactionManager interface + SpringTransactionManager adapter (AxonIQ API Docs)
Layer:
raw/company-tech-blogs/— AxonIQ vendor API javadoc 의 원문 발췌·출처 기록. source_type = company-tech-blog: AxonIQ 는 3rd-party framework vendor. Spring 공식 문서가 아님. 공식 Spring best practice 로 승격 불가. D3 (TransactionPort 채택) 의 보조 증거로만 활용.
Parent / 활용 branch
이 자료는 혼자 존재하지 않는다. 아래 branch 의 구현 결정의 근거로서 보관됨.
| Branch | 이 자료가 정당화하는 결정 |
|---|---|
| raw/branch-notes/feature-application-port-usecase-contract | D3 (TransactionPort 채택): enterprise OSS (Axon 3.6k stars, AxonIQ enterprise) 가 동일 abstraction 패턴 (executeInTransaction(Runnable) / fetchInTransaction(Supplier<T>)) 을 사용 — 개인 블로그 2건 근거를 격상하는 보강 증거 (company-case-study 강도, Spring 공식 아님) |
출처 / Source
- 원본 URL (인터페이스): https://apidocs.axoniq.io/3.3/org/axonframework/common/transaction/TransactionManager.html
- 원본 URL (Spring 어댑터): https://apidocs.axoniq.io/3.4/org/axonframework/spring/messaging/unitofwork/SpringTransactionManager.html
- 아카이브 URL:
- 저자 / 조직: AxonIQ (vendor API documentation)
- 발행일: Axon Framework 3.3.4 (interface) / 3.4 (Spring adapter)
- 마지막 확인일: 2026-05-28
왜 저장했는지 / Why archived
Axon Framework (GitHub 3.6k stars, AxonIQ enterprise backing) 의 TransactionManager interface 가 ca-tmpl TransactionPort 의 inWrite(supplier) / inRead(supplier) 와 시그니처 구조 1:1 유사. executeInTransaction(Runnable) + fetchInTransaction(Supplier<T>) 라는 callback 기반 transaction abstraction 이 개인 블로그 사례를 넘어 enterprise OSS 에도 동일하게 존재함을 증명 — D3 정당화를 engineering-blog → company-case-study 강도로 격상하는 보강 자료.
핵심 인용 / Key quotes (verbatim, 5건)
아래 모든 인용은 Self-Grep 검증 통과. HTML tag 제거, 공백 정규화. 원문 실체(javadoc 텍스트)는 보존.
[§Interface Description, line 110–112] "Interface towards a mechanism that manages transactions. Typically, this will involve opening database transactions or connecting to external systems."
[§startTransaction(), line 177] "Starts a transaction. The return value is the started transaction that can be committed or rolled back."
[§executeInTransaction(Runnable), line 191–192] "Executes the given
taskin a new Transaction. The transaction is committed when the task completes normally, and rolled back when it throws an exception."
[§fetchInTransaction(Supplier), line 206–209] "Invokes the given
supplierin a transaction managed by the current TransactionManager. Upon completion of the call, the transaction will be committed in the case of a regular return value, or rolled back in case an exception occurred."
[§SpringTransactionManager class description, line 120–121] "TransactionManager implementation that uses a
PlatformTransactionManageras underlying transaction manager."
Claims Extracted / 추출된 주장
주의: source_type =
company-tech-blog(AxonIQ vendor javadoc). Strength =company-case-study. Spring 공식 best practice 가 아님.
| Claim ID | Claim (이 자료가 직접 말하는 것) | Evidence quote | Strength | Applies to | Does not prove |
|---|---|---|---|---|---|
| AXON-TX-C1 | Axon Framework TransactionManager interface 는 transactions 를 추상화하는 mechanism 을 향한 interface 이며, 전형적으로 database transaction 개시 또는 외부 시스템 연결을 포함한다 |
[§Interface Description] "Interface towards a mechanism that manages transactions. Typically, this will involve opening database transactions or connecting to external systems." | company-case-study |
Axon Framework 3.3.x 를 사용하는 JVM 애플리케이션 | Spring 공식 transaction abstraction 이 이 인터페이스를 권장하는 것을 증명하지 않음. Axon 특화 abstraction |
| AXON-TX-C2 | executeInTransaction(Runnable task) 는 새 Transaction 안에서 task 를 실행하며, task 가 정상 완료 시 commit, exception throw 시 rollback 한다. fetchInTransaction(Supplier<T> supplier) 는 현재 TransactionManager 가 관리하는 transaction 안에서 supplier 를 호출하고, 정상 반환 시 commit, exception 시 rollback 한다 |
[§executeInTransaction] "Executes the given task in a new Transaction. The transaction is committed when the task completes normally, and rolled back when it throws an exception." / [§fetchInTransaction] "Invokes the given supplier in a transaction managed by the current TransactionManager. Upon completion of the call, the transaction will be committed in the case of a regular return value, or rolled back in case an exception occurred." |
company-case-study |
Axon Framework 3.3.x — executeInTransaction (Runnable) + fetchInTransaction (Supplier) 두 default method |
(1) ca-tmpl inWrite / inRead / inNew 3중 메서드 구조가 Axon 과 1:1 매핑임을 증명하지 않음 — Axon 은 단일 executeInTransaction + fetchInTransaction. ca-tmpl 의 3중 분리는 자체 결정. (2) propagation 옵션 없음 — Axon executeInTransaction 은 항상 new transaction (ca-tmpl inNew 와만 1:1). inWrite (REQUIRED) / inRead (REQUIRED + readOnly) 와는 매핑 안 됨 |
| AXON-TX-C3 | SpringTransactionManager 는 Spring PlatformTransactionManager 를 underlying transaction manager 로 사용하는 TransactionManager 구현체이며, SpringTransactionManager(PlatformTransactionManager transactionManager) 생성자로 초기화된다 |
[§SpringTransactionManager class] "TransactionManager implementation that uses a PlatformTransactionManager as underlying transaction manager." / [§constructor] "Initializes the SpringTransactionManager with the given transactionManager and the default transaction definition." |
company-case-study |
Axon Framework 3.4, Spring 환경 | ca-tmpl SpringTransactionPort 가 이 어댑터 패턴과 "구조 동일" 하다는 것은 structural analogy 임. Axon SpringTransactionManager 는 Axon unit-of-work lifecycle 에 결합 — ca-tmpl SpringTransactionPort 는 독립 TransactionTemplate 기반으로 구현. 동일 구조이지만 런타임 lifecycle 은 다름 |
| AXON-TX-C4 | Axon Framework 는 GitHub 3.6k stars + AxonIQ enterprise backing 을 가진 established 3rd-party framework 이며, enterprise-grade transaction abstraction 사례를 제공한다 | [title element, line 7] "TransactionManager (Axon Framework 3.3.4 API)" — AxonIQ 공식 API 문서. GitHub star / enterprise backing 은 별도 공개 정보 | company-case-study |
Axon Framework ecosystem 을 채택한 JVM 프로젝트 | Spring 공식 best practice 임을 증명하지 않음. AxonIQ 는 독립 vendor. "enterprise OSS 사용 사례" 수준 근거 |
Usage Boundaries / 적용 경계
이 자료가 직접 증명하는 것
AXON-TX-C1: Axon Framework 의 transaction abstraction 이Runnable/Supplier<T>callback 기반임AXON-TX-C2: callback 기반 transaction abstraction (executeInTransaction+fetchInTransaction) 이 enterprise OSS 에도 존재함 — D3 의 보강 증거AXON-TX-C3: SpringPlatformTransactionManager를 underlying 으로 감싸는 어댑터 패턴이 Axon 에도 사용됨AXON-TX-C4: Axon Framework 는 established enterprise OSS (company-case-study강도)
이 자료가 증명하지 않는 것
- Axon 은 3rd-party framework — Spring 공식 best practice 가 아님. D3 에 단독으로 쓰면 근거 강도 미달
- ca-tmpl
TransactionPort의inWrite/inRead/inNew3중 메서드 구조 는 Axon 과 1:1 매핑 안 됨. Axon 은 단일executeInTransaction(항상 new transaction) +fetchInTransaction(결과 반환). ca-tmpl 의 REQUIRED / readOnly / REQUIRES_NEW 3분리는 자체 결정 - Axon
TransactionManager.executeInTransaction은 propagation 옵션 없음 (항상 new transaction) — ca-tmplinNew(REQUIRES_NEW) 와만 1:1.inWrite(REQUIRED propagation 재사용) /inRead(readOnly) 는 Axon 에 직접 대응 없음 - Axon
SpringTransactionManager는 Axon unit-of-work lifecycle 에 결합되어 있음 — ca-tmplSpringTransactionPort의 독립적TransactionTemplate구현과 런타임 lifecycle 이 다름
내 프로젝트에 적용하려면 추가 확인이 필요한 것
- D3 를
company-case-study이상으로 격상하려면 Spring 공식 문서에서 "application layer 의 transaction callback abstraction" 을 직접 권고하는 source 필요 — 현재 미존재 inWrite(REQUIRED) /inRead(readOnly) 의 propagation 기반 분리 결정 근거는raw/official-docs/spring-tx-management-reference.md(SPRING-TX-MGR-C3, C6) 가 별도로 제공
메모 / Notes
- Axon Framework 의
NoTransactionManager(Known Implementing Enum) 는 ca-tmpl 의TransactionPortnoop stub 구현에 참고 가능 (테스트 환경) - Axon 은
fetchInTransaction을executeInTransaction의 결과 반환 대안으로 명시 — ca-tmpl 에서inWrite(Supplier<T>)/inWrite(Runnable)default 두 시그니처로 분리한 것과 구조적 유사 SpringTransactionManager(PlatformTransactionManager, TransactionDefinition)두 번째 생성자는 ca-tmpl 의 모드별 pre-built template (write / readOnly / requiresNew) 과 목적 동일- 이 javadoc 출처는 API Docs — 기술 블로그 아닌 vendor 공식 API 문서이지만, Spring/Oracle/IETF 공식 표준이 아닌 3rd-party vendor 이므로
company-tech-blog+company-case-study강도 적용
Related / 관련
- raw/company-tech-blogs/transaction-port-clean-ddd-spring-medium — UNIL 개인 블로그, D3 동일 진화 경로 (
engineering-blog) - raw/company-tech-blogs/transaction-port-vassilis-soum-github-readme — TransactionPort 참고 구현 (
engineering-blog) - raw/official-docs/spring-tx-management-reference — Spring PlatformTransactionManager SPI + propagation 기본값 (
official-vendor-doc) — AXON-TX-C3 의 공식 대응 source - raw/official-docs/transaction-template-spring-official — Spring
TransactionTemplateprogrammatic API (official-vendor-doc) — AXON-TX-C2 의 공식 counterpart