인프런 커뮤니티 질문&답변

정현우님의 프로필 이미지

작성한 질문수

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

44강. 배포를 위한 프로그램 설치하기

44강 AWS 배포시 테이블생성 질문있습니다!

23.09.01 15:40 작성

·

319

1

local에서는 테이블 생성이나 변경된점을 자동으로 생성및 변경해줘서 인텔리제이에서 할때는 테이블을 생성하지 않았습니다. 리눅스서버에는 테이블과 컬럼을 다 작성해서 만들어 줘야하는 부분일까요??

답변 1

0

최태현님의 프로필 이미지
최태현
지식공유자

2023. 09. 01. 15:50

안녕하세요 현우님!! 좋은 질문 감사드립니다~ 🙂

결론부터 말씀드리면 개발자가 선택할 수 있는 부분입니다!

 

강의에서 다루었던 것처럼 JPA를 사용할 경우에, ddl-auto 옵션을 통해 여러가지 DB 테이블 조작을 할 수 있습니다. 예를 들어 update 라는 설정을 주어 테이블의 변경된 지점을 자동으로 관리해줄 수 있고, create 라는 설정을 통해 테이블을 제거했다가 새로 만드는 것을 자동으로 해줄 수도 있죠. none 으로 설정하고 저희가 직접 리눅스에서는 테이블을 만들어줄 수도 있고요!

 

각 방법에는 장단점이 있습니다.

우선 update 같은 경우는, 개발자가 테이블을 매번 챙겨줄 필요가 없다는 장점이 있어요! 하지만 세밀하게 테이블을 관리하고 싶다거나, 서비스의 테이블 구조와 실제 테이블이 달라야 할 필요가 있다면 대응하기가 어렵다는 단점이 있습니다.

createcreate-drop 같은 경우는 테이블이 삭제되는 과정이 있기 때문에 개발 및 배포 환경에서는 사용하기 부적절하고요!! (데이터가 모두 사라지니까요!!)

none 같은 경우는 update 와 반대로 테이블을 매번 챙겨줘야 하지만, 세밀하고 유연한 제어가 가능하다는 장점이 있습니다.

 

또한 추가적으로 강의에서 다루지는 않았지만 flyway 와 같은 마이그레이션 툴을 관리해서 DDL을 자동으로 적용시키기도 합니다. (이 툴은 MySQL 8 버전과 사용하려고 할 경우 유료에요! 🥺)

 

답변이 도움이 되었으면 좋겠습니다.

감사합니다! 🙏

정현우님의 프로필 이미지
정현우
질문자

2023. 09. 01. 15:53

명쾌한 답변 정말 감사합니다^^ 즐거운 주말 보내세요!