'

ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [STUDY12] DAO에 관하여
    FISA 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

    댓글

Designed by Tistory.
티스토리 친구하기