@Entity
- @Entity가 붙은 클래스는 JPA가 관리한다.
- JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 가 필수이다.
※ 주의사항
1. 기본 생성자가 필수이다. (파라미터가 없는 public 또는 protected 생성자)
2. final 클래스, enum, interface, inner 클래스 사용하지 않는다.
3. 저장할 필드에도 final을 사용하지 않는다.
package hellojpa;
import javax.persistence.Entity;
import javax.persistence.Id;
// Entity 이름은 기본으로 클래스 명으로 들어감 바꾸려면 -> Entity(name='test')
// @Table(name = "MBR") 으로 테이블명을 바꿀수 있음
@Entity
@Table
public class Member {
@Id
private Long id;
private String name;
// 기본생성자
public Member(){
}
// 생성자 생성 alt + insert
public Member(Long id, String name) {
this.id = id;
this.name = name;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
데이터베이스 스키마 자동생성
- DB 방언을 활용해서 DB에 맞는 적절한 DDL을 생성해준다.
- 생성된 DDL은 개발모드에서만 사용! 운영서버에서는 사용 금지
- 컬럼이나 테이블이 생성은 되지만 Delete 는 자동으로 되지 않음 → 위험해서???
옵션 | 설명 |
create | 기존 테이블 삭제 후 다시 생성( drop + create ) |
create-drop | create와 같으나 종료시점에 테이블을 drop 시킴 |
update | 변경된 부분만 반영( 운영 DB에서 사용하면 X ) |
validate | 엔티티와 테이블이 정상 매핑 되었는지만 확인 |
none | 사용하지 않음 |
※ 주의사항
1. 운영 단계에서는 절대 create, create-drop, update 사용금지
2. 개발 초기 단계에서는 create 또는 update 사용
3. 테스트 서버에서는 update 또는 validate 사용
4. 스테이징과 운영서버는 validate 또는 none 이 적절하다.
'JAVA' 카테고리의 다른 글
[JAVA] JPA 기본키 매핑 (0) | 2021.11.11 |
---|---|
[JAVA] JPA 필드와 컬럼 매핑 (0) | 2021.11.10 |
[JAVA] JPA 준영속 상태 (0) | 2021.11.09 |
[JAVA] JPA 플러시(flush) (0) | 2021.11.09 |
[JAVA] JPA 영속성 관리 (0) | 2021.11.09 |