JAVA

[JAVA] JPA 엔티티 매핑 + DB 스키마 자동생성

응디 2021. 11. 10. 14:34

@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 사용하지 않음

 

DB 스키마 자동생성 옵션 설정 예시(maven)
옵션 : create 예시

 

 주의사항
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