인프런 커뮤니티 질문&답변

문상준님의 프로필 이미지

작성한 질문수

스프링 DB 1편 - 데이터 접근 핵심 원리

트랜잭션 문제 해결 - 트랜잭션 템플릿

db sql 트랜잭션

해결된 질문

작성

·

40

0

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)

[질문 내용]
트랜잭션 때문에 이렇게 복잡하고, 긴 여정을 떠나왔는데, 그냥 String sql = 에다가 트랜잭션 문장을 넣으면 안되나요? 그렇게 해서, 그냥 repository에 송금 트랜잭션 메소드를 넣으면 더 간편하지 않나요?

SRP를 위반해서 그렇게 하지 않는 것 인가요?

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

문상준님의 질문에 대해 답변드립니다.

트랜잭션이 복잡해 보일 수 있지만, 이는 데이터의 일관성과 안정성을 유지하기 위한 중요한 과정입니다. 단순히 String sql 변수에 트랜잭션 문장을 넣는 것만으로는 섬세한 트랜잭션 관리가 어렵습니다. 트랜잭션 처리 과정에서는 여러 가지 상황을 고려해야 하며, 이를 위해 Spring 같은 프레임워크에서는 선언적 트랜잭션 관리를 제공하여 트랜잭션의 시작, 커밋, 롤백 등을 효과적으로 관리할 수 있게 도와줍니다.

또한, SRP(단일 책임 원칙)를 위반하지 않는 설계는 각 클래스나 메소드가 하나의 책임만을 가지도록 함으로써, 시스템의 유지보수성을 높이고, 변경에 유연하게 대응할 수 있게 만드는데 큰 도움이 됩니다. 저장소(repository)에 비즈니스 로직(여기서는 송금 트랜잭션 처리)을 포함시키는 것은 이러한 설계 원칙에 어긋날 수 있습니다.

따라서, 트랜잭션 관리 과정이 복잡해 보일 수 있으나, 이는 시스템의 안정성과 확장성을 위해 필요한 절차임을 이해하시는 것이 중요합니다.