[JPA] Entity와 EntityManager

dev-log·2021년 12월 15일
0

Entity

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;
    }
}

따라서 테이블은 한개지만, 엔티티는 경우에 따라 여러 개를 만들 수 있다.

Reference

https://perfectacle.github.io/2018/01/14/jpa-entity-manager-factory/

profile
배운 걸 기록하는 곳입니다.

0개의 댓글