JPA와 Hibernate 설정 중 persistence.xml 파일 내 설정은 개발과 배포 환경 모두에 영향을 주는 핵심 요소입니다. 특히 실서버에서는 데이터베이스에 직접 영향을 주는 설정을 신중하게 다뤄야 합니다.
주요 설정 예시
<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
<property name="hibernate.hbm2ddl.auto" value="validate" />
<property name="hibernate.cache.provider_class" value="org.hibernate.cache.EhCacheProvider"/>
<property name="hibernate.max_fetch_depth" value="3"/>
<property name="hibernate.jdbc.fetch_size" value="5"/>
<property name="hibernate.jdbc.batch_size" value="50"/>
주요 설정 설명
- hibernate.dialect
사용 중인 데이터베이스 종류에 맞는 방언(Dialect)을 지정합니다.
예: Oracle, MySQL, PostgreSQL 등 - hibernate.show_sql
실행되는 SQL을 콘솔에 출력합니다 (디버깅용).
개발 중에는 유용하지만, 실서버에서는 비활성화 권장. - hibernate.format_sql
SQL 출력 시 들여쓰기 등 포맷팅 적용 (가독성 향상용). - hibernate.hbm2ddl.auto
데이터베이스 스키마 자동 생성 및 검증 관련 가장 주의할 설정입니다.
hibernate.hbm2ddl.auto의 옵션별 의미
none | 아무 동작도 하지 않음. 실서버에서 권장. |
validate | 엔티티와 실제 DB 스키마의 구조 일치 여부만 확인. 생성이나 수정은 하지 않음. |
update | 엔티티 변경사항을 반영하여 DB를 자동 수정. 테스트 환경에서는 편리하지만 실서버에서는 위험. |
create | 실행 시마다 기존 테이블 삭제 후 새로 생성 (데이터 전부 삭제됨). |
create-drop | 실행 시 create처럼 생성하고, 종료 시 모든 객체를 삭제. |
auto (deprecated) | 예전 버전 Hibernate에서만 사용 가능. 현재는 명시 필요. |
실서버에서 절대 피해야 할 설정
<property name="hibernate.hbm2ddl.auto" value="create" />
- 이 설정은 프로젝트 실행 시 기존 DB 테이블을 전부 삭제하고 새로 생성합니다.
- 실서버에 적용할 경우 데이터베이스가 초기화되어 영구 손실 발생 가능성이 있습니다.
실서버 배포 시에는 반드시 validate 또는 none으로 설정하세요!
마무리 팁
- persistence.xml은 프로젝트 실행 시점에 읽혀 설정이 즉시 반영되므로, 실서버에서는 반드시 신중히 관리하세요.
- 설정 변경 시, 사전 테스트 환경에서 반드시 검증 후 적용을 권장합니다.
'전산실 생존기' 카테고리의 다른 글
[Eclipse 오류 해결] 'com.ibm.icu.text.UTF16.isSurrogate(char)' 오류 해결법 3가지 총정리 (2) | 2025.04.25 |
---|