본문 바로가기
JPA/JPA원리

6 JPA 객체와 테이블 매핑, 데이터베이스 스키마 자동 생성

by 킹차니 2021. 7. 4.
김영한님의 인프런 강의와 PDF를 바탕으로 정리하였습니다.
https://www.inflearn.com/courses?s=%EA%B9%80%EC%98%81%ED%95%9C

JPA 객체와 테이블 매핑

 

 

@Entity @Table

 

객체와 테이블 매핑을 위해서는 @Entity, @Table 어노테이션을 사용합니다.

위처럼 name 속성을 사용하여 @Entity에 사용하면 엔티티의 이름, @Table에 사용하면 매핑할 테이블의 이름이 됩니다.

디폴트는 현재 엔티티클래스의 이름인 Member로 됩니다.

 

@Entity 가 붙은 클래스는 JPA가 관리하는 엔티티 클래스가 됩니다. 하여 JPA를 사용하여 테이블과 매핑시 해당 어노테이션은 필수입니다.

 

주의할 점은 

1. 기본 생성자(파라미터 없는 생성자)가 있어야 하며, 

2. final클래스, enum, interface, inner클래스에는 사용이 불가하며,

3. 저장할 필드에 final을 사용하면 안됩니다.

 

 

@Table

@Table 어노테이션은 몇 가지 속성이 있습니다.

 

 


 

 

데이터베이스 스키마 자동 생성

 

데이터베이스 스키마 자동 생성은 DDL을 애플리케이션 실행 시점에 자동으로 생성하는 기능입니다.

1. 테이블 중심 -> 객체 중심

2. 데이터베이스 방언을 활용해서 데이터베이스에 맞는 적절한 DDL생성

위와 같은 장점이 있습니다.

DDL (Data Definition Language) : 테이블 같은 데이터 구조를 정의하는 데 사용되는 조작어로 CREATE, DROP ALTER 등이 있다.

 

위의 표처럼 DDL 옵션을 지정할 수 있습니다. 이를 사용하기 위해서는 persistence.xml에 프로퍼티를 추가해주어야 합니다.

만약 create를 사용한다면 아래와 같이 하면 됩니다.

이렇게 하면 테이블을 굳이 만들지 않아도 애플리케이션 실행시 Member 엔티티클래스에 정의해둔대로 테이블을 생성합니다.

이를 확인하기 위해 아래 코드를 실행해보겠습니다.

 

실행 결과:

 

테이블이 생성되고, 데이터가 들어간 것을 확인할 수 있습니다.

 

DROP, CREATE sql이 실행된 것이 보입니다. 

주의할 점은 DROP문을 날린다는 것입니다. 잘못 사용시 테이블에 있는 데이터들이 날라갈 수 있으니 주의해서 사용해야 합니다.

 

하여 아래와 같은 규칙을 준수하여 사용하는 것이 좋습니다.

  • 운영 장비에는 절대 create, create-drop, update 사용하면 안된다.
  • 개발 초기 단계는 create 또는 update
  • 태스트 서버는 update 또는 validate
  • 스테이징과 운영 서버는 validate 또는 none

 

 

 

'JPA > JPA원리' 카테고리의 다른 글

8 JPA 기본키 매핑  (0) 2021.07.05
7 JPA 필드와 칼럼 매핑  (0) 2021.07.04
5 JPA 준영속 상태  (0) 2021.07.03
4 JPA 플러시(flush)  (0) 2021.07.03
3 JPA 영속성 컨텍스트 이해하기  (0) 2021.07.03