본문 바로가기

Backend/Spring

Spring Boot Session MySQL 연동, 저장

이미 구현한 Spring Session의 데이터를 MySQL에 저장하는 방법에 대해서 알아볼거에요.

예제 소스가 필요하신 분은 아래 글을 참고해주세요.

https://gofnrk.tistory.com/42

 

Spring Boot Session 사용하기 (Bean Scope)

Spring Boot에서 세션을 사용하는 방법에 대해서 알아볼게요. Bean Scope를 활용하여 session 데이터를 편리하게 관리할 수 있는 방법을 알려드릴거에요. 굉장히! 간단합니다. 컴포넌트 하나만 추가하면 되요. Use..

gofnrk.tistory.com

build.gradle

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
	implementation 'org.springframework.session:spring-session-jdbc'
	runtimeOnly 'org.mariadb.jdbc:mariadb-java-client' // MariaDB
}

application.yml

spring:
  datasource:
    url: jdbc:mariadb://localhost:3306/tutorial
    driver-class-name: org.mariadb.jdbc.Driver
    username: root
    password: 1234
  session:
    timeout: 600
    store-type: jdbc
    jdbc:
      initialize-schema: always
      table-name: SPRING_SESSION
  jpa:
    open-in-view: false
    generate-ddl: true

 

서버를 실행하면 테이블 두 개가 만들어져요.

 

 

세션 ID가 만들어지면 아래와 같이 데이터가 INSERT 되요.

 

 

Redis나 MongoDB와는 달리 세션이 만료될 경우 데이터베이스에서 자체적으로 삭제되지 않고 Spring 서버에서 로직을 통해 삭제되게 되어있어요.

또한, 테이블 두 개로 나뉘어 관계형으로 설계되어있고 key도 걸려있어서 데이터 복잡도도 존재합니다.

세션 관리에는 불리한 면이 없지 않아 있습니다.

저는 실무에서 세션 데이터를 RDBMS에 저장하는 건 아직 보지 못했네요 ㅠㅠ