-
[JPA] 4. 엔티티 매핑 - 1. 객체와 테이블 매핑 / 데이터베이스 스키마 자동 생성ComputerScience/JPA 2022. 6. 25. 22:40
객체와 테이블 매핑
엔티티 매핑에는 다음과 같은 매핑이 있습니다.
- 객체와 테이블 매핑: @Entity, @Table
- 필드와 컬럼 매핑: @Column
- 기본 키 매핑: @Id
- 연관관계 매핑: @ManyToOne,@JoinColumn
우리는 이 중 객체와 테이블 매핑을 알아보도록 하겠습니다.
@Entity
- @Entity가 붙은 클래스는 JPA가 관리하고 이를 엔티티라고 합니다.
- JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 어노테이션 필수
주의
- 기본 생성자 필수(파라미터가 없는 public 또는 protected 생성자)
- final 클래스, enum, interface, inner 클래스 사용X
- 내가 디비에 저장하고 싶은 필드에는 저장할 필드에 final 사용
@Entity 속성 정리
- 속성: name
- JPA에서 사용할 엔티티 이름을 지정합니다.
- 기본값 : 클래스의 이름을 그대로 사용합니다.
- 같은 클래스 이름이 없다면 가급적이면 기본값을 사용합니다.
@Table 속성 정리
- @Table은 엔티티와 매핑할 테이블 지정
- name : 매핑할 테이블 이름을 지정합니다.
- catalog : 데이터베이스 catalog를 매핑해줍니다.
- schema : 데이터베이스 schema를 매핑해줍니다.
- uniqueConstraints : DDL을 생성할 때 유니크 제약 조건을 생성해줍니다.
데이터베이스 스키마 자동 생성
이제 데이터베이스 스키마를 자동 생성하는 방법을 알아보겠습니다.
- 해당 기능은 DDL(Data Definition Language)를 애플리케이션 실행 시점에 DB테이블을 자동 생성해주는 세팅입니다.
- 객체만 생성해주면 알아서 테이블을 생성해주는 기능입니다.
- 데이터베이스 방언을 활용해서 데이터베이스에 맞는 적절한 DDL을 생성해줍니다.
- 이렇게 생성된 DDL은 운영장비가 아니라 개발장비에서만 사용해야 합니다.
- 생성된 DDL은 운영에서는 사용하지 않거나, 적절히 다듬은 후 사용합니다.
이 기능의 특이한 점은
꼭 개발에서만 써야함 . 운영에서 쓰면 안된다......
속성
hibernate.hbm2ddl.auto
- persistence.xml에 hibernate.hbm2ddl.auto 세팅을 넣어주고 DDL 생성을 사용할 수 있습니다.
- value에 따른 옵션은 다음과 같습니다.
- 해당 DDL 생성 기능은 위에 설명한 대로 데이터베이스 방언 별로 다르게 생성됩니다.
유의사항
- 운영 장비에는 절대 create, create-drop, update를 사용하면 안됩니다.
- 개발 초기 단계에는 create 또는 update 정도만 사용해줍니다.
- 테스트 서버에는 update 또는 validate 정도만 사용합니다.
- 스테이징과 운영 서버에는 validate 또는 none 수준을 사용합니다.
DDL 생성 기능
- 제약조건을 추가하여 DDL 생성 기능을 사용할 수 있습니다.
- Column (unique = true, length = 10)
- 이렇게 설정하면 DDL 생성 시, name varchar(10), primary key(id) 와 같이 세팅됩니다.
- 이런 DDL 생성 기능은 DDL을 생성할 때만 영향을 주고 어플리케이션에는 영향을 주지 않습니다. 즉, JPA 실행 로직에는 영향을 주지 않습니다. DDL 생성에만 도움을 줍니다.
'ComputerScience > JPA' 카테고리의 다른 글
[JPA] 3. 영속성 관리 - 플러시, 준영속 (0) 2022.06.19 [JPA] 3. 영속성 관리 - 영속성 컨텍스트 (0) 2022.06.11 [JPA] 2. JPA 시작 (0) 2022.06.06 [JPA] 1. JPA 소개 - JPA 소개 (0) 2022.06.05 [JPA] 1. JPA 소개 - SQL 중심적인 개발의 문제점 (0) 2022.06.02