본문 바로가기

Java

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

JPA 를 사용하면 애플리케이션 실행 시점에 DDL 을 실행하여 데이터베이스를 정의 할 수 있다.

 

따라서 애플리케이션 실행 전 클래스를 통해 엔티티를 생성하거나 수정하게 되었을 때,

애플리케이션을 다시 실행하게 되면 테이블이 생성 또는 수정 되게 된다.

 

이를 통해 테이블 중심 개발에서 -> 객체 중심 개발을 할 수 있게 된다.

 

또한 데이터베이스 방언을 활용하여 H2, Oracle, Postgresql 등 데이터베이스에 적절한 DDL 을 생성할 수 있습니다.


적용하는 방법

 

스프링

application.yml

spring:
  jpa:
    hibernate:
      ddl-auto: none

 

 

자바 

persistance.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.2"
             xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd">

    <persistence-unit name="">
        <properties>
            <property name="hibernate.hbm2ddl.auto" value="update" />
        </properties>
    </persistence-unit>
</persistence>

 


속성

옵션 설명
create 기존테이블 삭제 후 다시 생성 (DROP -> CREATE)
create-drop create 와 같으나 종료시점에 테이블 DROP
update 변경분만 반영 ( ALTER )  -> 운영 DB 에 사용 X
validate 엔티티와 테이블이 정상 매핑되었는지 확인용
none 속성 사용 x 

 

속성 사용시 주의점

 

운영 장비에는 절대로 create, create-drop, update 를 사용하면 안된다. ->

                                                                                                               데이터베이스의 테이블이 변경될 수 있으므로 위험

 

개발 초기단계에는 create 또는 update 사용 권장

테스트 서버는 update 또는 validate 사용 권장

스테이징과 운영서버는 validate 또는 none 사용 권장


참조

자바 ORM 표준 JPA 프로그래밍 - 김영한

'Java' 카테고리의 다른 글

JPA 임베디드 타입 ( @Embeddable, @Embedded )  (0) 2024.02.09
JPA 객체와 테이블 매핑  (0) 2024.01.31
JPA Unknown entity 해결방법  (0) 2024.01.29
JPA 구현체 하이버네이트 사용방법  (0) 2024.01.27
JPA 란?  (1) 2024.01.21