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 |