FISA

[STUDY12] DAO에 관하여

즈_말 2026. 1. 12. 15:20

1월 12일 수업을하다가

* 순수db와 소통하는 클래스구조 - Data Access Object(DAO)

*

* 권장사항 :

* table당 dao클래스는 1:1권장

* join작업이 빈번한 구조의 경우 추가 dao개발도 있음

*

에대해 배웠습니다.

DAO에대해 더 알고싶어서 글을 적어봅니다.

 

melog하면서 dto에대해 빠삭하게는아니더라두 조금알았어요!!!

이거랑 비슷한게 아닐까싶어서? 더 깊게 파고드려구요

 

 

우선 저번에 melog할땐 dto 했었어요.

Client > Server, Server > Client 혹은 Controller >Service같은 Layer에서 사용합니다.

순수 데이터 객체로, 이름값처럼 Data Transfer Object == 데이터를 옮기는 오브젝트라고 보시면돼요 .

엔티티 자체를 옮겨다니다보면, 보안위협이나 순환참조같은 에러가 발생한다는거죠

로직이없어요.

public class UserDTO {
    private String userId;
    private String name;
    private String email;

    // getter / setter
}

 

와같이 어느 클래스에 필요한 데이터 오브젝트를 이 값들로 채우겠다 ! 선언하기때문에

전부 선언하지않아도 되는거죠

 

근데?

DAO는 로직이 이써용

DB접근 로직을 캡슐화 한 객체입니다.

SQL문이 들어가고 + Connection관리가 들어가고 ResultSet으로 객체를 매핑합니다.

Connection으로 연결한 db에 sql문으로 데이터 정의를하고, resultSet으로 매핑하는 과정인거예요.

 

이때 나오는 특징이 JDBC/ JPA/ MYBATIS를 사용합니다.

public class UserDAO {

    public UserDTO findById(String userId) {
        // DB 연결
        // SQL 실행
        // ResultSet → UserDTO 변환
        return userDTO;
    }

    public void insert(UserDTO userDTO) {
        // INSERT SQL
    }
}

 

 

그래서 로그인을 예시로 들었을 때,

Client-> server > Controller > DTO(LoginRequestDTO) > Serice > DAO(DB접근) > DTO > Service > Controller > View

로 보시면될것같아요

 

 

 

728x90