Skip to content

fix(transaction): 조회 트랜잭션을 읽기 전용으로 설정하고 진단 로그 추가 - #54

Closed
LeeBaekHaeng wants to merge 1 commit into
eGovFramework:mainfrom
itcen-entec-2026:codex/fix/select-read-only-transaction
Closed

LeeBaekHaeng wants to merge 1 commit into
eGovFramework:mainfrom
itcen-entec-2026:codex/fix/select-read-only-transaction

Conversation

@LeeBaekHaeng

Copy link
Copy Markdown
Contributor

수정 사유 Reason for modification

소스를 수정한 사유가 무엇인지 체크해 주세요. Please check the reason you modified the source. ([X] X는 대문자여야 합니다.)

  • 버그수정 Bug fixes
  • 기능개선 Enhancements
  • 기능추가 Adding features
  • 기타 Others

수정된 소스 내용 Modified source

검토자를 위해 수정된 소스 내용을 설명해 주세요. Please describe the modified source for reviewers.

변경 목적

조회 메서드에 읽기 전용 트랜잭션 속성을 지정하고,
등록 및 목록 조회 시 실제 트랜잭션 상태를 로그로 확인할 수 있도록 한다.

변경 내용

  • 트랜잭션 AOP 적용 대상의 select* 메서드에 read-only="true"를 설정한다.
  • EgovSampleServiceImpl에 @slf4j를 추가한다.
  • insertSample과 selectSampleList에서 트랜잭션 활성 여부,
    읽기 전용 여부 및 이름을 DEBUG 로그로 출력한다.
  • log4j2.xml에 Spring 트랜잭션 DEBUG/TRACE 설정 예시를 주석으로 추가한다.
    해당 설정은 현재 활성화되지 않는다.

검증 결과

  • 환경: JDK 17.0.17+10, Maven 3.9.9
  • 실행: mvn -o -DskipTests clean compile
  • 결과: 컴파일 실패
  • 원인: 운영 소스에서 test 범위 의존성인 spring-test의
    MockMvcResultHandlers.log를 static import하고 있다.
  • 테스트 및 실행 중 트랜잭션 동작 검증은 수행하지 않았다.

병합 전 확인 사항

  • 불필요한 MockMvcResultHandlers.log static import를 제거하고 재검증한다.
  • select* 규칙에는 rollback-for="Exception"이 없으므로,
    조회 메서드의 체크 예외 롤백 정책이 의도에 맞는지 확인한다.

JUnit 테스트 JUnit tests

테스트를 완료하셨으면 다음 항목에 [대문자X]로 표시해 주세요. When you're done testing, check the following items.

  • JUnit 테스트 JUnit tests
  • 수동 테스트 Manual testing

테스트 브라우저 Test Browser

테스트를 진행한 브라우저를 선택해 주세요. Please select the browser(s) you ran the test on. (다중 선택 가능 you can select multiple) [X] X는 대문자여야 합니다.

  • Chrome
  • Firefox
  • Edge
  • Safari
  • Opera
  • Internet Explorer
  • 기타 Others

http://localhost:8080/egovframe-web

http://localhost:8080/egovframe-web/addSampleView.do

테스트 스크린샷 또는 캡처 영상 Test screenshots or captured video

테스트 전과 후의 스크린샷 또는 캡처 영상을 이곳에 첨부해 주세요. Please attach screenshots or video captures of your before and after tests here.

https://youtu.be/5TtuL0stkBo

select* 메서드에 읽기 전용 트랜잭션 속성을 지정한다.
등록 및 목록 조회 시 트랜잭션 활성 여부, 읽기 전용 여부와 이름을
DEBUG 로그로 출력한다.
Spring 트랜잭션 상세 로그 설정 예시를 주석으로 추가한다.
@jei007

jei007 commented Sep 11, 2026

Copy link
Copy Markdown
Contributor

표준프레임워크에 대한 지속적인 참여에 대단히 감사드립니다.
이번 PR은 다음과 같은 이유로 반영하지 않습니다.

  1. EgovSampleServiceImpl 클래스의 메소드에서 Cheched 예외가 발생하지 않으므로 rollback-for="Exception" 설정 여부에 따라 결과가 달라지지 않음
  2. insertSample 메소드도 최종적으로는 Unchecked 예외로 처리되므로 결과가 달라지지 않음
  3. MockMvcResultHandlers.log 사용에 제한이 있다면 PR에서 제거되어야 함
  4. 클래스에서 사용중인 로거 이외에 로거를 도입함으로써 일관성이 없어짐

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants