DAO(Repository), DTO, Entity 란?

2021. 10. 6. 14:54


DAO(Data Access Object)

Repository Package를 의미하며, 프로젝트에 XxxxRepository 로 표현하는 경우가 한다.

DAO는 실제로 DB에 접근하는 객체를 의미한다.

정리하자면, XxxxRepository는 DB에 데이터를 CRUD(SQL을 사용하여 DB에 접근)하는 역할을 한다. 

 

현재 진행중인 프로젝트에서는 JPA/Querydsl을 이용하기 때문에

XxxxRepository는 interface로 JpaReopsitory<User, Long>을 extends하여 사용한다. 

public interface XxxxRepository extends JpaRepository<XXX, Long>{
}

 

JpaRepository에는 findAll() , findAll(Sort), fsave(), getOne() 과 같은 공통 인터페이스를 작성하게 된다. 

public List<XXX> findAll(){
    return queryFactory
           .selectFrom(table)
           .fetch();
}

DTO (Data Transfer Object) 

Dto Package를 의미하며, 프로젝트에 XxxxDto 로 표현하는 경우도 있고, Dto를 생략하고 Xxxx와 같이 표현하는 경우도 있다. 

DTO는 계층간 데이터 교환을 위한 객체를 의미한다. 

정리하자면, DTO는 Client, Service, Controller, Repsitory 사이에서 데이터를 전달하기 위한 역할을 한다. 

DTO는 로직을 가지고 있지 않은 데이터 객체이기 때문에 getter/setter 메서드만 갖는다.

 

@Data
@NoArgsConstructor
public class Xxxx{
	private String id;
	private String no;
}

Entity Class

Domain Package를 의미하며 Entity 클래스는 실제 DB의 테이블과 매칭될 클래스다.

Entity 클래스는 외부에서 getter을 사용하지 않도록 필요한 Domain Logic을 구현한다.

Entity 클래스에서 구현한 메소드는 주로 Service Layer에서 사용한다. 

@Entity
@Getter
@AllArgsConstructor
@Table(name='xxxx_inf', schema='zzzz')

public class Xxxx implements Serializable {

      @Column(name='id')
      private String id;
    
      @Column(name='no')
      private String no;
}

내가 공부하려고 작성하는 포스트

'Web > Backend' 카테고리의 다른 글

Spring profile(-local.yml) 설정  (0) 2021.10.16
MVC 패턴이란?  (0) 2021.09.30

BELATED ARTICLES

more