Coding 공부/IntelliJ

[IntelliJ_MariaDB_Java_Servlet] 스트림, TodoList#3 DB에 연결

CBJH 2024. 4. 25.
728x90
반응형

1. 스트림

 

  • Java에서 스트림(Stream)은 데이터 컬렉션의 처리를 매우 간결하고 효율적으로 할 수 있게 해주는 API입니다. 스트림 API는 함수형 프로그래밍 방식을 사용하여 컬렉션의 요소를 필터링, 변환, 집계 등의 처리를 할 수 있도록 도와줍니다. 여기서 살펴볼 map과 collect는 스트림에서 사용하는 대표적인 연산자 중 두 가지입니다.

 

  • 스트림(Stream)
    • 스트림은 '데이터의 흐름'입니다. 컬렉션(리스트, 셋, 맵 등)의 요소에 연속적인 작업을 편리하게 수행할 수 있도록 해줍니다. 스트림을 사용하면 멀티스레딩 처리 없이도 데이터를 효율적으로 처리할 수 있으며, 코드도 더욱 간결하고 읽기 쉬워집니다.
  • map(Function<? super T, ? extends R> mapper)
    • map 연산은 스트림의 각 요소에 함수를 적용하고, 함수의 결과로 새로운 스트림을 생성합니다. 즉, 원본 스트림의 각 요소를 변환하는 작업을 수행합니다. 이 코드에서 map은 TodoVO 객체를 받아 modelMapper를 사용하여 TodoDTO로 변환합니다. modelMapper.map(vo, TodoDTO.class) 호출은 vo를 TodoDTO 타입의 객체로 매핑하고, 이 매핑된 객체들로 이루어진 새로운 스트림이 생성됩니다.
  • collect(Collector<? super T,A,R> collector)
    • collect 연산은 스트림의 요소들을 요약하거나 특정 구조로 변환하는 최종 연산입니다. collect를 사용하면 스트림의 데이터를 새로운 형태로 축적하거나 그룹화할 수 있습니다. 예를 들어, Collectors.toList()는 스트림의 요소들을 리스트로 수집합니다. 따라서 이 코드에서 collect(Collectors.toList())는 모든 매핑된 TodoDTO 객체들을 하나의 리스트로 모으고, 이 리스트가 메소드의 반환값이 됩니다.
public List<TodoDTO> listAll() throws Exception {
    // DAO(Data Access Object)를 통해 데이터베이스에서 모든 할 일(Todo) 레코드를 조회합니다. 조회 결과는 TodoVO(Value Object) 리스트로 반환됩니다.
    List<TodoVO> voList = dao.selectAll();

    // 조회된 TodoVO 객체 리스트를 스트림으로 변환합니다.
    List<TodoDTO> dtoList = voList.stream()
            // 스트림의 각 요소(TodoVO 객체)를 TodoDTO 클래스의 인스턴스로 매핑합니다. 이 매핑 작업은 'modelMapper' 객체를 사용하여 수행됩니다.
            .map(vo -> modelMapper.map(vo, TodoDTO.class))
            // 매핑된 스트림을 리스트로 수집합니다. 최종 결과는 TodoDTO 객체의 리스트입니다.
            .collect(Collectors.toList());

    // DTO 리스트를 반환합니다.
    return dtoList;
}

 

2. To Do List 연습 문제

IntelliJ로 MariaDB에서 데이터를 불러와 DAO로 sql문을 보내 데이터를 처리하고, Service에서 mapper를 이용해 DTO 객체로 만든다. Controller에서 webServlet의 urlPatterns에 접근해 Get, Post 방식으로 requst값을 받고 response 응답을 보낸다.

 

2.1 깃허브 링크

https://github.com/cbjh-4/Todo_Java_MariaDB_JSP

 

정보처리 실기 공부 이슈로 시간이 없어 UI는 텍스트만 보여주고, 버튼만 만들었습니다. 

댓글