인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

Noah님의 프로필 이미지

작성한 질문수

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

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

H2 사용 시 ddl-auto update 설정하고 age 컬럼 alter 쿼리 발생 안 할 때

작성

·

64

0

평소 같으면 그냥 일할 때 개발 환경과 동일하게 설정해서 할텐데...
무슨 바람인지.. 이번엔 그냥 영한쌤 강의 보면서 그대로 따라해야지 하고 별생각 없이 강의를 듣던 중...

ddl-auto create, create-drop까지 무난했음..
ddl update로 하고 id , name 컬럼 생성 create문 정상 여기까지도 무난...ㅎ
그러나 대망의 age 컬럼 추가하려고 하니
?? alter문 왜 안 날라감? 했습니다...

개발자로서 오기가 생겨서
해결 해보려고 뒤져보니 비슷한 분들 많더라고요?
와 이럴순없어 하고 변태모드 시작

이것 저것하다가 해결되서 공유합니다..ㅎ
영한 쌤이 실제 사용중인 H2 버전이랑 의존성 추가할 때 버전 맞추라고 하셨는데
Hibernate 버전은 말씀이 없으셨습니다..

그래서 H2 버전이 2.3.232 사용중이 때문에
hibernate 버전 6.4.4.Final 로 변경하고

모든 import jakarta로 변경하니 잘되네요

쓸데없는 소리가 길었는데요
시간 낭비하지말고 빨리 수정해서 강의 들읍시다! 홧팅

```
<!-- pom.xml -->
<!-- hibernate -->

<dependency>

<groupId>org.hibernate.orm</groupId>

<artifactId>hibernate-core</artifactId>

<version>6.4.4.Final</version>

</dependency>

<!-- Jakarta Persistence API -->

<dependency>

<groupId>jakarta.persistence</groupId>

<artifactId>jakarta.persistence-api</artifactId>

<version>3.1.0</version>

</dependency>
```

이후 모든 import문 jakarta로 변경





답변 1

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다.

Noah님께서 질문해주신 hibernate.hbm2ddl.auto 설정을 “update”로 하였을 때, 특정 컬럼 추가에 대한 alter 쿼리가 발생하지 않는 문제는 JPA와 Hibernate를 사용할 때 자주 겪는 이슈 중 하나입니다. 기본적으로 hibernate.hbm2ddl.auto 옵션을 “update”로 설정하면, 스키마를 애플리케이션의 엔티티 클래스에 맞추어 업데이트하도록 되어 있지만, 모든 컬럼 변경 사항이 데이터베이스 스키마에 반영되지는 않을 수 있습니다.

이 문제는 주로 다음 사항들로 인한 것입니다:

  1. Hibernate 버전과 H2 버전의 호환성 문제: 특정 버전의 Hibernate가 사용하는 특정 데이터베이스 버전을 완벽하게 지원하지 않는 경우가 있습니다. Noah님은 H2 데이터베이스 2.x 버전을 사용하시면서 Hibernate의 버전을 업데이트(Major 업데이트)하여 문제를 해결하셨다고 합니다.

  2. 스키마 업데이트 제한: update 옵션은 데이터베이스 스키마의 주요 변경사항(일부 열 추가 등)은 반영하지만 대규모 변경사항에는 제한이 있을 수 있습니다. 새로운 컬럼 추가 시 Hibernate는 alter table 쿼리를 실행하지 않을 수 있습니다.

  3. 코딩 패턴 변경: 엔티티 내에서 @Column 등의 JPA 어노테이션을 바르게 설정했는지 다시 확인해보시는 것도 좋습니다.

아래 기존 답변들을 참고하셔서 문제를 해결하실 것을 추천드립니다:

문제를 해결하고 강의를 무사히 진행하셨기를 바랍니다. 이러한 정보가 문제 해결에 도움이 되었으면 좋겠습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

Noah님의 프로필 이미지

작성한 질문수

질문하기