티스토리 뷰
** 주의 : 운영에선 사용하면 안된다.
- DDL을 애플리케이션 실행 시점에 자동 생성
- 테이블 중싱 - > 객체 중심
- 데이터베이스 방언을 활용해서 데이터베이스에 맞는 적절한 DDL 생성
- 이렇게 생성된 DDL은 개발 장비에서만 사용
- 생성된 DDL은 운영서버에서는 사용하지 않거나, 적절히 다듬은 후 사용
<?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="hello">
<properties>
<!-- 필수 속성 -->
<property name="javax.persistence.jdbc.driver" value="org.h2.Driver"/>
<property name="javax.persistence.jdbc.user" value="sa"/>
<property name="javax.persistence.jdbc.password" value=""/>
<property name="javax.persistence.jdbc.url" value="jdbc:h2:tcp://localhost/~/test"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
<!-- 옵션 -->
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
<property name="hibernate.use_sql_comments" value="true"/>
<!-- <property name="hibernate.jdbc.batch_size" value="10"/> 10개까지 sql을 모아서 커밋 함-->
<property name="hibernate.hbm2ddl.auto" value="create" /> <!--어플리케이션 구동 시 ddl 자동 생성-->
</properties>
</persistence-unit>
</persistence>
persistence.xml 안에 다음 내용을 추가한다.
<property name="hibernate.hbm2ddl.auto" value="create" /> <!--어플리케이션 구동 시 ddl 자동 생성-->
기동 시에 로그확인 (현재 member 클래스만 있다)
Hibernate:
drop table member if exists
Hibernate:
create table member (
id bigint not null,
name varchar(255),
primary key (id)
)
drop을 날린 후 create가 된다.
- hibernate.hbm2ddl.auto 속성
ㄴ create : 기존테이블 삭제 후 다시 생성 (DROP + CREATE)
ㄴ create-drop : create와 같으나 종료시점에 테이블 DROP
ㄴ update : 변경분만 반영 (운영DB에는 사용하면 안됨) (컬럼을 지운 경우에는 alter가 날아가지 않는다.)
ㄴ validate : 엔티티와 테이블이 정상 매핑되었는지만 확인
ㄴ none : 사용하지 않음
주의점
- 운영 장비에는 절대 create, create-drop, update를 사용하면 안된다.
- 개발 초기 단계는 create 또는 update
- 테스트 서버는 update 또는 validate
- 스테이징과 운영 서버는 validate 또는 none
DDL 생성 기능
- 제약조건 추가 : 회원 이름은 필수, 10자 초과 X
ㄴ @Column (unique = true, nullable = false, length = 10) : 데이터베이스 생성 때에만 발동하므로 어플리케이션 영향이 아님
- 유니크 제약조건 추가
ㄴ @Table(uniqueConstraints = {@UniqueConstraint(name = "NAME_AGE_UNIQUE", columnNames = {"NAME","AGE"})})
- DDL생성 기능은 DDL을 자동 생성할 때만 사용되고 JPA의 실행 로직에는 영향을 주지 않는다.
'dev_공부일지 > spring JPA 활용 웹만들기' 카테고리의 다른 글
페이징 API (0) | 2024.02.20 |
---|---|
프로젝션(SELECT) (0) | 2024.02.19 |
엔티티 매핑 (0) | 2024.01.31 |
준영속 상태 (0) | 2024.01.30 |
플러시란? (0) | 2024.01.30 |
- Total
- Today
- Yesterday
- 향해플러스
- 컨트
- 항해99
- HTTP
- 로그인
- thymleaf
- filter
- 향해99
- 스프링부트
- Java
- rejectValue
- reject
- 스프링공부
- 항해플러스
- 백엔드 개발자 공부
- hypertexttransferprotocol
- ArgumentResolver
- JPA
- jpa api
- 백엔드 개발자 역량
- 향해플러스백엔드
- react실행
- 인터셉터
- exception
- SpringBoot
- Intercepter
- BindingResult
- React
- 리터럴
- 예외처리
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |