ddl-auto none일 때 db 수정
실 서비스 중인 프로젝트는 데이터 베이스가 날라가면 안되기에 ddl-auto를 none으로 둔다.
토이 프로젝트에서도 ddl-auto 를 none으로 두는 걸 권장한다.
이때, 데이터베이스는 직접 SQL문을 날려 구성하고 수정해야 한다.
우리 프로젝트는 초기 설정할 때 가장 처음 한 번만 ddl-auto를 create으로 해서 테이블들을 생성했다. 이후, 데이터베이스에 컬럼을 추가한다던가 제약조건을 건다던가 하는 수정 사항이 생기면 ddl-auto가 none이기에 직접 SQL문을 날려 수정해줬다.
자주 사용한 SQl문 두 가지를 소개한다. 아래 두 개면 컬럼 수정할 것도 없이 컬럼 관련된 것들은 다 해결 가능하다.
# 컬럼 추가
alter table member add column tutorial_completed bit(1) default 0;
# alter table 테이블명 add column 컬럼명 타입 default 디폴트값;
# 컬럼 삭제
alter table member drop tutorial_completed;
# alter table 테이블명 drop 컬럼명;
SQL
복사
•
참고로 스프링에서 boolean 타입은 sql에서 bit(1)으로 표시된다. 아래는 실제 도메인 코드다.
@Builder.Default
private Boolean tutorialCompleted = false; // 튜토리얼 완료 여부
Java
복사
튜토리얼 페이지 적용 시 백엔드가 할 일
•
주어진 조건
◦
사용자는 회원가입 후 사이트 최초 접속 시 튜토리얼이 뜬다.
◦
최초 접속 이후엔 튜토리얼이 뜨지 않는다.
•
이를 구현하기 위해, 아래 세 가지 기능을 구현했다.
◦
member 테이블에 튜토리얼 완료 여부 필드 추가. default는 false
◦
튜토리얼 완료 API 구현. 튜토리얼 종료하면서 해당 API 호출 시, 완료했단 정보를 DB에 저장
◦
로그인 시에, 튜토리얼 완료 여부를 알려주게 로그인 API response 수정
•
후기
◦
중간에 사용자가 튜토리얼을 그만하는 기능은 넣지 않았기에 간단한 api를 구현하면 되었다.
◦
처음에 프론트분의 의견을 반영해, 튜토리얼 완료 여부를 프론트측에서 기기 별로 저장할까 고민했다.
◦
허나, 일반적으로 튜토리얼 페이지를 첫 로그인 시에만 뜨게 하는 걸 어떻게 구현 하는 지 찾아본 결과 멤버 테이블에 따로 튜토리얼 완료 여부 필드를 저장한단 걸 알게 되어 이를 프로젝트에 적용했다.