스프링부트 안드로이드 통신 구조

김주형·2024년 8월 22일

뭘 이런걸 다 합니다

목록 보기
36/51

참고


스프링부트 서비스 구조

클라이언트

  • 프론트 파트, 안드 스튜디오에서 구현

DTO (Data Transfer Object)

  • DTO는 VO(Value Object)로도 불림
  • 계층간 데이터 교환을 위한 객체를 의미
  • VO의 경우 Read Only라는 성격 보유
    DTO는 백엔드에서 사용하기 위한 변수라고 생각하면 편함

컨트롤러

  • 스프링 부트 플젝에서 구현
  • CRUD 메서드를 사용하는 부분
  • MVC 패턴 참고시 이해에 도움

서비스

  • Service, serviceImpl
  • service의 경우 인터페이스로 작성하여 스케치 -> serviceImple에서 인터페이스의 기능을 구현
  • 주로 서비스에서는 컨트롤러로부터 받아온 DTO를 엔티티로 바꾸어 전달하는 역할

엔티티

  • 엔티티는 데이터베이스에 쓰일 컬럼과 여러 엔티티간의 연관관계를 정의함
  • 데이터베이스의 테이블을 하나의 엔티티라고 생각해해도 무방
  • 실제 데이터베이스의 테이블과 1:1로 매핑됨
  • 이 클래스의 필드는 각 테이블 내부의 컬럼을 의미

왜 DTO와 엔티티를 구분하는가?

  • DTO는 개념상 프론트엔드와
  • 엔티티는 DB와 관계를 각각 갖고 있음
  • DTO 혹은 엔티티 하나만 쓰게 된다면 불필요한 정보의 전달 혹은 보안이 필요한 정보의 유출이 생길 수 있음
  • 이를 방지하기 위해 DTO와 엔티티의 역할을 분리하게 된 것

DataHandler

  • 서비스에서 DAO로 값을 전달하는 과정을 위해 추가적으로 데이터핸들러를 구현
  • DTO로 받아온 값들을 엔티티로 생성을 해주고 DAO에서 엔티티를 인지하는 것을 도와주는 형식으로 코드를 생성

DAO (Data Acesa Object)

  • 데이터베이스에 직접적으로 접근하는 객체를 의미 (Persistence Layer)
  • DAO의 경우 서비스가 DB에 연결할 수 있게 해주는 역할
  • DAO는 DB를 사용하여 데이터를 조회하거나 조작하는 기능을 전담
  • DAO의 경우 DAO와 DAOImpl로 구성되어 있는데 service의 case와 마찬가지로 DAO file에서는 인터페이스로 만들어 메서드를 선언하고 DAOImpl에서는 메서드가 선언되어 있는 인터페이스를 실제화하는 작업을 수행
  • DAO 파일을 구현하는데 있어서 실질적으로 인터페이스와 Impl에서 필요한 엔티티 값을 반환하는 메서드 생성
  • 그리고 이러한 엔티티 값을 DB에 저장하기 위해 컨트롤러에서는 DAO에서 구성한 메서드를 필요에 맞게 사용

레포지토리

  • DAO 아래 (Repository) 라고 써있는 부분을 확인 가능
  • 레포지토리란 엔티티에 의해 생성된 데이터베이스에 접근하는 메서드를 사용하기 위한 인터페이스
  • 레포지토리의 경우 서비스와 디비를 연결하는 고리의 역할을 수행
  • 레포지토리에서는 JPA를 이용하여 데이터베이스에 적용하고자 하는 CRUD를 정의하는 영역

DB

  • DataBase!
  • 클라이언트가 원하는 요청을 컨트롤러에서 인지하여 디비로부터 데이터를 읽어오거나 저장하는 등 CRUD를 진행
profile
우리스러움

0개의 댓글