Spring boot : @SessionAttributes

김아무개·2023년 8월 3일
0

Spring Boot 🍃

목록 보기
61/95

보고 배운 곳 : https://sun-22.tistory.com/53

@SessionAttribute != @SessionAttributes

이 둘은 다른 동작을 하는 메서드이다.

  • @SessionAttribute 는 컨트롤러 밖에서 생성된 세션 값에 접근
  • @SessionAttributes 는 컨트롤러에서 다루는 객체를 세션에 넣어 공유

이번 글에서는 @SessionAttributes 를 사용하는 것에 대해서만 학습.

학습하게 된 이유는 중복 저장 방지를 위해서다.

학습 후 느낀 점을 먼저 얘기해본다면,
이러한 방식은 아주 가벼운, 중요하지 않은 데이터를 다룰 때 적용 해보면 좋을 것 같다는 생각이 들었다.


중복 저장 테스트를 위한 처리

우선 테스트를 위해 Entity에 설정해둔 unique 옵션을 해제해줌


테스트를 위한 중복 데이터 발생 확인

발생 방법 : 데이터 valid 검사 완료 후 저장되는 과정에서 엔터 키와 스페이스 키를 연타하여 순식간에 저장 버튼이 여러번 눌리게 함

js의 setInterval() 을 이용하여 자동으로 여러번 저장되게 할 수도 있겠지만,
개인적으로 스트레스 풀이를 위해 연타를 시도하는 방향으로 진행



@SessionAttributes 어노테이션 부착

세션을 사용할 컨트롤러에 어노테이션을 달아준다.

이때,
어노테이션의 인자로는
메서드 호출 시 view에 전달 할 model.addAttribute()의 키 이름을 입력해주면 된다.

이렇게 해주면 세션에서 item 값을 읽어와 model.addAttribute() 에 넣어준다


form 화면으로 넘어갈 때 세팅


form 화면에서 값을 가지고 넘어올 때 세팅


오 그런데 확실히 세션을 사용하기 전보다는 중복 저장되는 갯수가 적어졌지만
말 그대로 적어졌을 뿐,
아주 빠르게 연타하면 여전히 중복 저장이 발생한다.

다른 방법을 찾아봐야겠다.


@SessionAttributes 설정 적용 후 테스트 결과

확실히 어노테이션을 사용하기 전 보다는 저장되는 갯수가 적어짐.
하지만 여전히 중복 저장 이슈 발생

profile
Hello velog! 

0개의 댓글