강의

멘토링

커뮤니티

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

공공수달님의 프로필 이미지
공공수달

작성한 질문수

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

스프링 어노테이션과 mysql 테이블과의 우선순위 질문

해결된 질문

작성

·

174

0

안녕하세요, 강의를 듣다가 저는 데이터 베이스에서 먼저 테이블을 안전하게 생성한 후에 스프링에서 엔티티 클래스를 작성할 때
알맞은 어노테이션을 붙이는 식으로 구현하고 있습니다.
 
이때 실수로 데이터베이스의 해당 테이블에서는 기본키 전략으로 AI를 하지 않은 바람에 @Generatedvalue 를 사용했을 때 에러가 발생했는데, 보통 어노테이션을 통해 발생되는 하이버네이트 쿼리보다 mysql에서 기본으로 생성된 테이블 전략이 더 우선순위를 가진다고 볼 수 있나요?

답변 1

0

안녕하세요. rt.slowth님, 공식 서포터즈 y2gcoder입니다.

ddl_auto 옵션을 보고 혼동하신 것 같습니다. 

JPA는 기본적으로 만든 엔티티와 매핑된 DB 테이블의 구조가 다를 경우 임의로 바꾸지는 않습니다. 어찌보면 당연할 수 있는데요. 원래 JPA를 도입하지 않고 운영하고 있던 프로젝트에서 이번에 JPA를 도입한다고 가정했을 때, (당연히 바로 운영환경에 적용하면 안되겠지만) JPA 설정 중 Entity 설정을 잘못했다고 그게 DB에 바로 반영되어버린다면 잘못하면 엄청난 장애로 이어질 수 있습니다. 
영한님의 최근 강의 제목에서도 볼 수 있듯이 JPA는 DB 접근 기술 중 하나입니다. DB 구조를 바꾸는데 목적이 있는 것이 아니라 DB에 접근하는 기술이라고 생각해주시면 될 것 같습니다.

요약하자면 ddl_auto: create와 같은 부가적인 기능을 사용하지 않는 이상 DB와 Entity 설정이 다를 때 Entity의 설정이 DB table 구조를 바꿀까 걱정하지 않으셔도 될 것 같습니다. 


감사합니다.

공공수달님의 프로필 이미지
공공수달

작성한 질문수

질문하기