인프런 커뮤니티 질문&답변
스프링 어노테이션과 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 구조를 바꿀까 걱정하지 않으셔도 될 것 같습니다.
감사합니다.





