on
[JAVA] JPA 엔티티 매핑 + DB 스키마 자동생성
[JAVA] JPA 엔티티 매핑 + DB 스키마 자동생성
@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 이 적절하다.
from http://eunji-dev.tistory.com/48 by ccl(A) rewrite - 2021-11-10 15:01:21