오늘은 Part 2. 게시판 서비스 강의의 `로그인 페이지 기능 테스트 정의`부분을 학습하였다.
스프링 시큐리티에서 제공하는 모듈을 사용하기로 했기 때문에 로그인 페이지에 대해서 따로 작업해줄 내용은 별로 없었다. 오늘은 강의 외 시간에 업데이트된 내용을 리뷰하는 것으로 강의를 진행하셨다.
게시글과 게시글댓글 서비스 로직 테스트 코드를 업데이트하였는데 업데이트한 내용은 다음과 같다.
ArticleServiceTest
검색어 없이 게시글을 검색하면, 게시글 페이지를 반환한다.검색어와 함께 게시글을 검색하면, 게시글 페이지를 반환한다.게시글을 조회하면, 게시글을 반환한다.없는 게시글을 조회하면, 예외를 던진다.게시글 정보를 입력하면, 게시글을 생성한다.게시글의 수정 정보를 입력하면, 게시글을 수정한다.없는 게시글의 수정 정보를 입력하면, 경고 로그를 찍고 아무것도 하지 않는다.게시글의 ID를 입력하면, 게시글을 삭제한다.
ArticleCommentServiceTest
게시글 ID로 조회하면, 해당하는 댓글 리스트를 반환한다.댓글 정보를 입력하면, 댓글을 저장한다.댓글 저장을 시도했는데 맞는 게시글이 없으면, 경고 로그를 찍고 아무것도 안한다.댓글 정보를입력하면, 댓글을 수정한다.없는 댓글 정보를 수정하려고 하면, 경고 로그를 찍고 아무 것도 안한다.댓글 ID를 입력하면, 댓글을 삭제한다.
그 다음으로 OSIV 옵션을 해제해주는 작업을 하였다. 스프링부트 경고를 끄고, 더 나은 설계를 위해(영속성 컨텍스트가 트랜젝션 범위 안에서 종료되게끔) OSIV 설정을 꺼주었다.
OSIV(Open Session In View)
OSIV는 영속성 컨텍스트를 뷰까지 열어두는 기능이다. 영속성 컨텍스트가 유지되면 엔티티도 영속 상태로 유지된다. 뷰까지 영속성 컨텍스트가 살아있다면 뷰에서도 지연 로딩을 사용할 수가 있다.
OSIV를 끄면 트랜잭션을 종료할 때 영속성 컨텍스트를 닫고, 데이터베이스 커넥션도 반환한다. 따라서 커넥션 리소스를 낭비하지 않는다.
OSIV 옵션 해제 방법
application.yaml 파일에 다음 옵션을 추가해준다.
jpa:
open-in-view: false