해당 글을 작성하게 된 계기

강의를 보고 따라 하는 데 나는 왜 자꾸 drop table 구문이 나오면서 테이블을 생성하는가?
테이블이 재 생성되니깐 기존에 쌓아둔 데이터가 쓸모가 없어지게 되면서 작성을 한다.
Hibernate란?
하이버네이트는 ORM으로 자바언어를 위해 객체 관계 매핑을 해주는 프레임워크입니다.
JPA의 구현체로, JPA 인터페이스를 구현하고 내부적으로 JDBC API를 사용하여 DB와의 통신을 진행합니다.
hbm2 ddl.auto의 역할?
하이버네이트 안에는 다양한 설정 프로퍼티가 존재합니다.
그중 hbm2ddl.auto는 설정값을 통해 자바 엔티티의 객체 변경사항이 DB 스키마로 자동 반영될 수 있게 할 수 있습니다.
hbm2 ddl.auto는 SessionFactory의 라이프사이클의 일부로 프로그램이 실행할 때 같이 반영됩니다.
hbm2 ddl.auto 값
- none : 기본 값이며 아무 일도 일어나지 않는다.
- create-only : DB를 새로 생성한다.
- drop : DB를 drop 한다.
- create : DB를 drop 한 후, DB 새로 생성한다.( drop -> create-only를 한 번에 진행)
- create-drop : SessionFactory가 시작될 때 스키마를 drop 하고 재생성하며, SessionFactory가 종료될 때도 스키마를 drop 한다.
- validate : DB 스키마를 검증하고, 객체구성과 스키마가 다르다라면 예외가 발생된다.
- update : DB 스키마를 갱신한다.
hbm2 ddl.auto 사용 시 주의사항
개발 시 진행을 하게 되면 스키마를 맞춰주니 편리함이 있으나,
운영 중인 곳에서 설정을 잘 못하게 되면 데이터가 날아갈 수 있는 "대참사"를 경험할 수 있다.
운영환경에서는 설정값으로 "none"을 권장하며,
개인적으로는 같이 개발하는 개발공간에서도 create는 삼가야 하는 것 같다.
'Programming > Java' 카테고리의 다른 글
추후 어떤 사이트인지 확인하려고 정리해두는 사이트 모음들 (0) | 2024.08.05 |
---|---|
[Error] 스프링부트 빌드/실행시 나타나는 에러 해결법 (0) | 2023.09.22 |
[IntelliJ] @DisplayName 한글 깨질때 해결 방법 (0) | 2023.09.21 |
IntelliJ를 이용한 Live Template 생성하기 (부제 : TDD 진행하기) (0) | 2023.09.20 |
[Error 해결법] Database {{디렉토리 경로}} not found, either pre-create it or allow remote database creation (0) | 2023.05.25 |
해당 글을 작성하게 된 계기

강의를 보고 따라 하는 데 나는 왜 자꾸 drop table 구문이 나오면서 테이블을 생성하는가?
테이블이 재 생성되니깐 기존에 쌓아둔 데이터가 쓸모가 없어지게 되면서 작성을 한다.
Hibernate란?
하이버네이트는 ORM으로 자바언어를 위해 객체 관계 매핑을 해주는 프레임워크입니다.
JPA의 구현체로, JPA 인터페이스를 구현하고 내부적으로 JDBC API를 사용하여 DB와의 통신을 진행합니다.
hbm2 ddl.auto의 역할?
하이버네이트 안에는 다양한 설정 프로퍼티가 존재합니다.
그중 hbm2ddl.auto는 설정값을 통해 자바 엔티티의 객체 변경사항이 DB 스키마로 자동 반영될 수 있게 할 수 있습니다.
hbm2 ddl.auto는 SessionFactory의 라이프사이클의 일부로 프로그램이 실행할 때 같이 반영됩니다.
hbm2 ddl.auto 값
- none : 기본 값이며 아무 일도 일어나지 않는다.
- create-only : DB를 새로 생성한다.
- drop : DB를 drop 한다.
- create : DB를 drop 한 후, DB 새로 생성한다.( drop -> create-only를 한 번에 진행)
- create-drop : SessionFactory가 시작될 때 스키마를 drop 하고 재생성하며, SessionFactory가 종료될 때도 스키마를 drop 한다.
- validate : DB 스키마를 검증하고, 객체구성과 스키마가 다르다라면 예외가 발생된다.
- update : DB 스키마를 갱신한다.
hbm2 ddl.auto 사용 시 주의사항
개발 시 진행을 하게 되면 스키마를 맞춰주니 편리함이 있으나,
운영 중인 곳에서 설정을 잘 못하게 되면 데이터가 날아갈 수 있는 "대참사"를 경험할 수 있다.
운영환경에서는 설정값으로 "none"을 권장하며,
개인적으로는 같이 개발하는 개발공간에서도 create는 삼가야 하는 것 같다.
'Programming > Java' 카테고리의 다른 글
추후 어떤 사이트인지 확인하려고 정리해두는 사이트 모음들 (0) | 2024.08.05 |
---|---|
[Error] 스프링부트 빌드/실행시 나타나는 에러 해결법 (0) | 2023.09.22 |
[IntelliJ] @DisplayName 한글 깨질때 해결 방법 (0) | 2023.09.21 |
IntelliJ를 이용한 Live Template 생성하기 (부제 : TDD 진행하기) (0) | 2023.09.20 |
[Error 해결법] Database {{디렉토리 경로}} not found, either pre-create it or allow remote database creation (0) | 2023.05.25 |