[JPA] 되살아나는 테이블??????

해질녘·2022년 8월 8일
0

Spring, JPA

목록 보기
7/10
post-thumbnail

문제

소문자로 된 테이블이 있길래 생성 시에 오류인가 해서 지우고 다시 진행했는데 다음날에 보니까 또 있다.

이게, 세간에서 말하는 부활 입니까?

그럴리가 없음

근데 난 나름 확신이 있던게

ddl-auto: none 으로 해 둬서 JPA 코드에서 테이블 자체를 건드리지는 못할 거라고 생각했다.

결론적으로, jpa에서 소문자 이름으로 된 테이블을 만들어서, 그쪽이랑 데이터를 주고 받고 있었단 걸 깨달았다.

이거 자동 갱신 안 된다. (난 되는줄) 그래서 새로고침 버튼 수시로 눌러줘야 함.

솔직히 내가 이렇게 대놓고 대문자라고 써 뒀는데...
-> 이거 적용 안 됨.

JPA 기본 정책은 테이블 명이 소문자라고 정해둠. 그래서 저렇게 써 놔도 이름이 student인 테이블이라고 인식하고 있는 것.

generate-ddl: true 설정을 해 두면 @Entity 붙은 엔티티에 대해 ddl을 생성, 실행한다.

즉 종합하자면 jpa에서 우선 소문자 이름으로 된 테이블을 찾았고, 그게 없으니까 생성까지 해서 연결해둔 것이다.

해결

선택지가 두 가지 있다.

  1. 모든 테이블 명을 소문자로 변경

  2. jpa의 네이밍 정책을 대문자 사용하도록 변경

즉 테이블 명을 소문자로 바꿀 건지, 대문자 테이블 명에 jpa를 맞출 건지이다.

개발 단계라서 데이터가 없기 때문에 이 김에 테이블 명을 소문자로 다 바꿨다.

그렇게 되면 연관 관계 꼬인다. (기존 ddl은 연관관계에 연결된 테이블명 역시 대문자로 작성함.)

연관 관계가 없는 것들은 이름만 바꾸고, 나머지는 지우고 ddl 수정해서 재생성했다.

삽질 해결!

참고

0개의 댓글