Entity란

Entity는 DB 테이블에 존재하는 Column을 필드로 가지는 객체를 뜻함. Entity는 DB 테이블과 1대1 대응관계이고, 테이블에 가지지 않는 Column을 필드로 가져서는 안 된다. 또한 다른 클래스를 상속받거나 인터페이스의 구현체여서는 안 된다.

 

Member 테이블에 id, name, age Column이 있으면

Spring Jpa를 사용할 때 아래와 같이 Entity 클래스를 작성할 수 있다.

@Entity
public class Member{

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    private String name;
    private int age;
}

 

@Entity어노테이션은 해당 클래스가 Entity 클래스라는 것을 명시한다

@Id 어노테이션은 해당 객체가 primary key임을 명시한다

@GeneratedValue(strategy = GenerationType.Identity) 어노테이션을 사용하면 DB에서 AUTO_INCREMENT 해준다.


 

DTO란

DTO란 Data Transfer Object로 데이터를 이동하기 위한 객체다.  Controller와 Service, Repository 계층 사이에 데이터가 이동할 때 DTO형태로 이동한다. DTO는 비즈니스 로직을 갖고 있는 않는 순수한 객체이고 일반적으로 getter와 setter만 사용한다. 

 

위의 Member클래스로 DTO를 작성하면 아래와 같이 작성할 수 있다.

@Getter
@Setter
class MemberDTO{
    private Long id;
    private String name;
    private int age;
}

위는 setter를 사용하여 가변 객체로 활용한것이고

아래와 같이 생성자를 사용해 불변 객체로 활용할수있다

@Getter
class MemberDTO{
    private final Long id;
    private final String name;
    private final int age;
    
    public MemberDTO(Long id, String name, int age){
	    this.id = id;
	    this.name = name;
	    this.age = age;
    }
}

위와 같이 생성자를 사용하여 초기화하면 데이터를 전달하는 과정에서 데이터가 변조되지않음을 보장할수있다.

 

 

 

Junyoung.dev