이전 포스팅(@Query, @Modifying, @Transactional에 대하여) 에서 영속성 컨텍스트를 포스팅하기로 하였다. 그러나 영속성 컨텍스트 이전에 알아야 하는 기본적인 JPA의 Entity가 무엇인지 Mapping은 어떻게 하는 지에 대한 지식이 필요하다고 생각되어 먼저 포스팅 하도록 하겠습니다.
내 개인적인 생각으로는 DB Table을 객체로 표현한 것(?) 이라고 생각한다.
SQL을 이용해 Table을 생성한 후 Entity를 만들 수도 있지만 JPA의 기능으로 Entity 를 참조하여 자동으로 Table을 만들어주는 설정을 제공하고 있기 때문이다.
Entity를 참조하여 자동으로 Table을 만들기 위해서는 아래의 설정을 지정해주면 된다.
// application.properties
spring.jpa.hibernate.ddl-auto=~~~;
ex1) Entity Class 명으로 DB Table을 Mapping 시킬 경우
@Entity
public class Car {
@Id
public String num;
public String kind;
}
Entity 를 참조하여 생성된 DDL
create table car (
num varchar primary key,
kind varchar
)
ex2) Entity Class 명과 다른 DB Table 명을 Mapping 시킬 경우
@Entity
@Table(name="bus")
public class Car {
@Id
public String num;
public String kind;
}
Entity 를 참조하여 생성된 DDL
create table bus (
num varchar primary key,
kind varchar
)
ex)
@Entity
public class Car {
// number field를 PK로 지정
// PK 생성을 DB로 위임하여 자동으로 생성되도록 함.
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public String num;
public String kind;
}
Entity 를 참조하여 생성된 DDL
create table car (
num varchar primary key auto_increment,
kind varchar
)
@Entity
public class Car {
@Id
//car_number Column과 Mapping.
@Column(name="car_number")
public String num;
// null을 허용하지 않는 not null 제약 조건 추가.
@Column(nullabe = false)
public String kind;
// 길이를 10으로 지정.
@Column(length = 10)
public String company;
// DB의 date 타입과 Mapping.
@Temporal(TemporalType.DATE)
public Date create_date;
}
Entity 를 참조하여 생성된 DDL
create table car (
car_number varchar primary key,
kind varchar not null,
company varchar(10),
create_date date;
)