DB의 테이블과 매칭되는 개념
why..? Table이 아니라 Entiy일까?
만약 DB에 아래와 같이 member라는 테이블이 있고, 해당 테이블의 스키마가 아래와 같다고 하면
CREATE TABLE `Member` (
`id` BIGINT(20) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`age` int(11) NOT NULL,
PRIMARY KEY (`id`)
)
엔티티는 아래와 같이 만들 수 있다.
@Entity
public class Member {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(nullable = false)
private long id;
@Column(nullable = false)
private String name;
@Column(nullable = false)
private int age;
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;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
기본적으로 JPA는 모든 필드를 불러오게 끔 구현되어 있다.
하지만 모든 케이스에서 모든 필드를 다 다루는 것은 아니다.
어떤 경우에는 id,name과 같이 부분 필드만 다루는 경우도 있다.
그런 경우에 대비해서 아래와 같이 엔티티 클래스를 하나 더 만들 수 있다.
@Entity
@Table(name = "Member")
public class MemberOnlyName {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(nullable = false)
private long id;
@Column(nullable = false)
private String 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;
}
}
따라서 테이블은 한개지만, 엔티티는 경우에 따라 여러 개를 만들 수 있다.
https://perfectacle.github.io/2018/01/14/jpa-entity-manager-factory/