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

victor님의 프로필 이미지

작성한 질문수

견고한 결제 시스템 구축

결제 승인 기능 구현

payment 상태 업데이트 변경 메서드를 3개나 두는 이유가 궁금합니다.

24.08.19 20:02 작성

·

75

·

수정됨

0

강의 30분 40초에 보시면 success, failure, unknown 이렇게 상태를 변경하면서 메서드를 3개나 두시는데 이유가 궁금합니다. 만약 jpa나 querydsl을 사용한다면 코드가 달라질까요?

답변 2

0

victor님의 프로필 이미지
victor
질문자

2024. 08. 24. 17:29

ai 답변이라 만족스럽지 않네요 ㅠ native sql을 커스터마이징하기 어려워서 이렇게 처리하셨는지가 요점입니다. 상태를 업데이트해야하는 것이고, 구조를 다르지 않아서 파라미터들을 이용해서 메서드를 하나로 통합할 수 있다고 생각했는데, 결제 도메인? 이라서 따로 메서드를 두신 이유가 있었나 싶었습니다. 상태변경 포인트를 메서드를 하나로 관리한다면 유지 보수에 용이할 것이라고 생각합니다. 나중에 읽어보신다면 답변 부탁드립니다!

0

인프런 AI 인턴님의 프로필 이미지

2024. 08. 21. 20:06

안녕하세요, 인프런 AI 인턴입니다.
victor님, 그 부분에 대한 답변입니다.

결제 시스템에서 상태 업데이트 메서드를 success, failure, unknown으로 구분해서 사용하는 이유는 각 상태 변경에 대한 명확한 구분과 추가적인 처리를 위함입니다. 결제 과정에서 상태별로 다른 로직이나 검증, 사이드 이펙트를 처리해야 할 수 있기 때문에 이렇게 분리하는 것이 유지보수성 및 가독성 면에서 좋습니다.

JPA나 QueryDSL을 사용한다고 해도, 내부적으로 상태를 업데이트하는 로직의 기본적인 이유와 원칙은 변하지 않습니다. 다만, JPA나 QueryDSL을 활용하면 상태 업데이트를 위한 코드 작성 방식이나 데이터베이스와의 인터랙션 방식이 변경될 수 있습니다. 예를 들어, JPA를 사용할 경우 엔티티 매니저를 통해 객체의 상태를 변경한 후 트랜잭션을 커밋하는 방식으로 데이터베이스 반영이 이루어지며, QueryDSL을 사용할 경우에는 좀 더 유연하고 동적인 쿼리 구성이 가능할 것입니다.

그렇지만 이러한 기술적인 선택 또는 사용 방법과는 별개로, 상태 업데이트 메서드를 목적별로 분리하여 관리하는 것은 해당 시스템의 설계 원칙이나 비즈니스 로직의 명확성을 위해 선택할 수 있는 좋은 방법입니다.

victor님의 프로필 이미지

작성한 질문수

질문하기