@Entity
@Entity가 붙은 클래스는 JPA가 관리, 엔티티라고 한다.
JPA를 사용해서 테이블과 매핑할 클래스라면 @Entity 필수!
주의사항
- 기본 생성자 필수(파라미터가 없는 public 또는 protected 생성자)
- final 클래스, enum, interface, inner 클래스 사용 X
- 저장할 필드에 final 사용 X
@Entity의 속성: name
@Entity
public class Member {
...
}
JPA에서 사용할 엔티티 이름을 지정한다.
기본값: 클래스 이름을 그대로 사용(예: Member)
같은 클래스 이름이 없으면 가급적 기본값을 사용한다.
@Table
@Table은 엔티티와 매핑할 테이블 지정
@Entity
@Table(name="MEMBER")
public class Member {
...
}
데이터베이스 스키마 자동 생성
DDL을 애플리케이션 실행 시점에 자동 생성
데이터베이스 방언을 활용해서 데이터베이스에 맞는 적절한 DDL 생성
이렇게 생성된 DDL은 개발 장비에서만 사용해야 하며, 운영서버에서는 사용하지 않거나 적절히 다듬어 사용한다.
속성
hibernate.hbm2ddl.auto
예제 코드
@Entity
public class Member{
@Id
private Long id;
private String name;
public Member() {
}
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 Long getName(){return name;}
public void setName(String name){this.name = name;}
...
}
create
<property name="hibernate.hbm2ddl.auto" value="create" />
어플리케이션 실행 시점에 기존 테이블을 먼저 지우고 데이터베이스 테이블을 자동으로 생성한다.
update
<property name="hibernate.hbm2ddl.auto" value="update" />
변경된 부분만 반영하여 테이블을 alter 한다. 운영 DB에서 사용하면 안됨
주의 사항
- 스키마 자동 생성 기능이 만든 DDL은 운영환경에서 사용할 만큼 완벽하지 않음.
- 개발 환경에서 사용하거나 매핑시 참고하는 용도로 사용.
- 절대 운영환경에서 사용하지 말자.
- 개발 초기 단계는 create 또는 update
- 테스트 서버는 update 또는 validate
- 스테이징과 운영 서버는 validate 또는 none
DDL 생성 기능
DDL을 자동 생성할 때만 사용되고 JPA의 실행 로직에는 영향을 주지 않는다.
- 제약조건 추가: 회원 이름은 필수, 10자 초과 X
@Column(nullable = false, length = 10)
- 유니크 제약조건 추가
@Table(uniqueConstraints = {@UniqueConstraint( name = "NAME_AGE_UNIQUE",
columnNames = {"NAME", "AGE"} )})
'💻dev > 🌱Java+Spring' 카테고리의 다른 글
JPA | 요구사항 분석과 기본 매핑 (예제-1) (0) | 2023.04.29 |
---|---|
JPA | 필드와 컬럼 매핑, 기본 키 매핑 (0) | 2023.04.29 |
JPA | 플러시와 준영속 상태를 알아보자 (0) | 2023.04.27 |
JPA | 엔티티의 생명주기와 영속성 컨텍스트를 알아보자 (0) | 2023.04.27 |
JPA | JPA란 무엇인가? (0) | 2023.04.27 |