ORM Framework(2026-15-18)
오늘은 JPA의 데이터베이스 스키마 자동 생성 기능(ddl-auto)과 기본키(PK) 매핑 전략을 핵심 위주로 정리했다.
먼저 application.yml의 spring.jpa.hibernate.ddl-auto 속성을 통해 애플리케이션 실행 시점의 DB 테이블 제어가 가능하다. 로컬 개발 환경에서는 애플리케이션 실행 시 기존 테이블을 삭제하고 새로 만드는 create, 종료 시 테이블을 삭제하는 create-drop, 변경된 스키마만 반영하는 update를 사용하면 스키마 관리가 편리하다. 하지만 실제 운영 환경에서는 데이터가 통째로 날아갈 위험이 있으므로 반드시 none이나 validate를 설정하여 스키마 자동 변경을 차단해야 한다.
다음으로 엔티티의 기본키 매핑은 @Id 어노테이션과 함께 @GeneratedValue(strategy = GenerationType.IDENTITY)를 적용했다. 이 전략은 기본키 할당을 데이터베이스에 전적으로 위임하는 방식으로, MySQL의 AUTO_INCREMENT 기능을 사용할 때 적합하다.
가장 중요한 포인트는 IDENTITY 전략의 내부 동작 방식이다. 이 전략은 DB에 실제로 INSERT 쿼리가 실행되어야만 생성된 식별자(PK) 값을 알 수 있다. 따라서 JPA 영속성 컨텍스트의 주요 기능인 '트랜잭션을 지원하는 쓰기 지연'이 동작하지 않으며, 엔티티를 persist() 하는 시점에 즉시 데이터베이스로 INSERT 쿼리가 날아간다. 단순한 설정값 하나라도 그 백그라운드의 동작 원리를 정확히 인지하고 사용해야 시스템을 제대로 제어할 수 있음을 잊지 말아야겠다.
댓글
댓글이 없습니다.
