JPA는 매핑 정보만 봐도 어떤 테이블인지, 열은 뭔지, 어떤 쿼리를 만들어야 하는지 까지도 알기 때문에,
테이블도 자동으로 생성할 수 있다.
당연히 운영단계에서 사용하는 것은 아니고,
개발에서 테스트 할 때나 로컬PC에서 작업할 때 도움이 된다.
자동생성 된 것이므로, 약간 의도되지 않은 면 들이 있음. 근데 개발할때만 쓸거라 상관은 없음.
이걸 사용하려면 우리가 JPA에게 DB정보를 정의해 뒀던 persistence.xml에 속성을 추가 해 줘야 함.
<property name="hibernate.hbm2ddl.auto" value="create"/>
ddl auto를 create로 하겠다.
이렇게 하면은, 자동으로 테이블을 생성함.
Hibernate:
drop table if exists Member cascade
Hibernate:
create table Member (
id bigint not null,
name varchar(255),
primary key (id)
)
먼저, 테이블이 이미 존재할 시 삭제하라는 쿼리를 날리고,
테이블을 생성하라는 쿼리를 보냄.
자동으로 이렇게 보내는 거임.
update는 예를 들어 우리가 정의한 @Entity에 뭔가 필드로 추가 했고,
이미 그 테이블이 DB에 있다면,
그 추가한 필드를 반영해 줌
alter table 테이블명 add column 추가한필드명 ~~~~~
해서
근데 지우는 건 반영되지 않음.
column 하나 날라가면 큰일날 수도 있으니까.
validate는 테이블과 @Entity가 안 맞을 때 에러를 뿜음.
@Entity의 필드명과 테이블의 열명이 틀렸다던지..
테이블 명이 틀렸다던지도 그럴테고..
none은 안하는 거.
근데 그냥 사실, 왠만하면 쓰지 말라고 함.
alter같은 것도 잘못 치면 진짜 데이터 몇천만 건 있으면 시스템 중단될 수 있음.
자동으로 테이블을 수정시킨다는 면이 굉장히 위험함.
진짜 개인 로컬서버에서만 쓰고,
여러 명 있는 개발서버나 그런 것에서만 정말 왠만하면 쓰지 마셈.
진짜 왠만하면 쓰지 말아야 겠다...
@Column 속성 중에도 DDL 생성에만 영향을 주는 게 있음.
@Column(unique = true, length = 10)
저 두개.
length는 뭐 테이블 생성할 때 varchar(10) 이렇게
이런 자동 생성 기능을 DDL이라 하는 듯
'JPA > JPA 기본' 카테고리의 다른 글
13. 기본 키 매핑 (0) | 2023.10.21 |
---|---|
12. 필드와 컬럼 매핑 (0) | 2023.10.21 |
10. 객체와 테이블의 매핑 (0) | 2023.10.21 |
9. 준영속 상태 (0) | 2023.10.20 |
8. 플러시 (0) | 2023.10.20 |