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

dongju님의 프로필 이미지
dongju

작성한 질문수

자바 ORM 표준 JPA 프로그래밍 - 기본편

데이터베이스 스키마 자동 생성

ddl 속성 질문

해결된 질문

작성

·

326

0

안녕하세요. ddl 속성 통해서 스키마 자동 생성하는 부분에서 이해가 안되는 부분이 있어서 질문드립니다.

이전 강의까지의 예제에서 ddl 설정값을 주석처리했는데도 h2 콘솔상에서 member 테이블이 생성되고 데이터가 삽입된 것을 확인했습니다.

ddl-auto 속성값을 none 또는 주석처리해도 @Entity 애노테이션을 기준으로 알아서 테이블을 만들어주는 건가요? 만약 그렇다면, 운영서버에서 자동 생성을 사용하지 말아야한다고 하셨는데 @Entity 애노테이션을 통해 자동으로 테이블이 생성되는 것을 어떻게 막을 수 있나요??

답변 2

0

삭제된 글입니다

확인 감사합니다.

핵심은 이전에 테이블을 생성했었고 해당 테이블이 남아있어서 발생한 문제입니다.

0

안녕하세요. dongju님, 공식 서포터즈 David입니다.
.

H2를 Memory가 아닌 Local에서 설치된 것을 사용중이신가요?

만약 그렇다면 ddl-auto:create 때 생성되었던 테이블이 남아있을 수 있습니다.

프로젝트 실행 전 모든 테이블을 삭제한 뒤 다시 시도해보시겠어요?

H2를 Memory에 올라가 있다면 실행 종료시 메모리에 올라가 있던 테이블이 날아갑니다. 그러나 로컬에 설치된 H2라면 생성한 테이블들이 프로그램 종료시 삭제되진 않습니다.

.
감사합니다.

dongju님의 프로필 이미지
dongju
질문자

@Entity 애노테이션이 있어도 ddl 속성이 안켜져있으면 테이블 생성이 안되는게 정상이라는 말씀이신건가요?? 메모리로 실행한건지 뭐로 실행한건지 잘 모르겠습니다..ㅠ h2 사이트에서 콘솔 다운받아서 콘솔 실행하고 메모리가 아닌 tcp 로컬 연결한것 같습니다.

dongju님의 프로필 이미지
dongju
질문자

ddl-auto가 none이면 테이블 생성 안되는게 맞습니다.

메모리가 아니라면 제가 위에 말씀드린대로 ddl-audo:create일 때 생성된 테이블이 남아있어서 ddl-auto:none으로 재실행해도 테이블이 그대로 보여지는 것 같습니다.

dongju님의 프로필 이미지
dongju
질문자

감사합니다!!

dongju님의 프로필 이미지
dongju

작성한 질문수

질문하기