TIL 11-09

거북·2023년 11월 9일

TIL

목록 보기
7/22

오늘은 기존에 만들었던 메모장 프로젝트의 구조를 수정하였다. 역할을 분리하여 controller에 치중되어 있던 기능들을 따로 빼주는 작업을 진행했다.

역할분리

그 중 @GetMapping부분만 살펴보면

 @GetMapping("/memos")
    public List<MemoResponseDto> getMemos() {
        // DB 조회
        String sql = "SELECT * FROM memo";

        return jdbcTemplate.query(sql, new RowMapper<MemoResponseDto>() {
            @Override
            public MemoResponseDto mapRow(ResultSet rs, int rowNum) throws SQLException {
                // SQL 의 결과로 받아온 Memo 데이터들을 MemoResponseDto 타입으로 변환해줄 메서드
                Long id = rs.getLong("id");
                String username = rs.getString("username");
                String contents = rs.getString("contents");
                return new MemoResponseDto(id, username, contents);
            }
        });
    }

이것이 기존 코드이고 아래와 같이 controller에는 함수 호출만 해주며 기능은 다른 패키지를 따로 생성하여 그 곳에서 관리하도록 변경했다.

@GetMapping("/memos")
    public List<MemoResponseDto> getMemos() {
        MemoService memoService=new MemoService(jdbcTemplate);
        return memoService.getMemos();
    }

/service 폴더 내에 생성한 getMemos()매서드

public List<MemoResponseDto> getMemos() {
        // DB 조회
        String sql = "SELECT * FROM memo";

        return jdbcTemplate.query(sql, new RowMapper<MemoResponseDto>() {
            @Override
            public MemoResponseDto mapRow(ResultSet rs, int rowNum) throws SQLException {
                // SQL 의 결과로 받아온 Memo 데이터들을 MemoResponseDto 타입으로 변환해줄 메서드
                Long id = rs.getLong("id");
                String username = rs.getString("username");
                String contents = rs.getString("contents");
                return new MemoResponseDto(id, username, contents);
            }
        });
    }

이를 통해 가독성도 높아지고 유지보수 측면에서도 크게 도움이 된다. 실제 기업에서 사용하는 코드의 경우에는 이런 것과 비교도 안될 정도로 방대할 것인데 기능별로 잘게 나누어져 있지 않으면 작은 수정사항이 생겨도 어디를 고쳐야 할지 찾는데만 오래 걸릴것같다.

백준허브

오늘부터 알고리즘 스터디를 시작했는데 주어진 시트를 통해서 프로그래머스에 접속하여 나오는 문제를 풀어보았다. 해결한 문제를 깃허브와 연동하면 좋을것 같다고 생각만 하고 있었는데 다른 교육생분이 백준허브를 활용하면 자동으로 연동을 쉽게 할 수 있다고 하셔서 크롬 확장프로그램으로 추가하고 사용해보니 프로그래머스에서 해결한 문제를 레벨별로 깃 레포지토리에 저장해주어서 아주 편리했다.

0개의 댓글