블로그

  • 미래 목표

    나는 40살에 은퇴를 하고 싶은 파이어족이다. 이제 막 월급을 저축하기 시작했지만 돈을 모어간다는 생각에 설렌다.
  • 통계를 보여주기 위한 쿼리

    업무를 하면서 통계자료를 보여주는 화면을 개발하게 됐다.

    처음에는 단순히 ‘모든 조건에 대해서 select 쿼리만 만들면 되겠지’ 라고 생각했다.

    그에 맞는 차트 라이브러리를 찾고 한 컴포넌트에서 데이터들을 한 번에 응답으로 반환하여 각 차트에 맞는 데이터로 가공하는 일은 프론트 단에서 진행하였다.

    차트별로 월별, 분기별, 연도별로 보여주는 차트도 있고 부서별 또는 개인별 차트도 존재했기에 해당 쿼리들을 빈번하게 조회하면 DB에 부하가 가지 않을까 하는 생각이 들어 차트 관련 쿼리에 대해 찾아보게 되었다.

    DECODE

    DECODE 함수는 if ~ else 문과 같이 동작하는 함수이며

    DECODE(column, 조건1, 결과1, 조건2, 결과2, ...)

    형태로 사용한다.

  • 인생 30000일: 경험의 중요성

    인생 30000일: 경험의 중요성

    인간은 평균 30000일을 산다고 한다. 20대가 지나고 30대를 앞두면 약 10000일 정도를 산 것이다.

    기고, 걷고, 뛰고, 공부하고, 대학을 가면 얼추 6000일이 지나고 대학생활을 즐기고 취업을 하면 약 10000일을 소모한 게 된다.

    뒤로 갈 수록 에너지도 줄어들고, 몸도 마음과 같지 않아지는데 10000일이 지났다는게 놀랍지 않은가.

    아직 못해본 경험이 많다.

    포르투 모루 공원에 가서 포트 와인도 한 잔 해봐야 하고,

    파리에서, 에펠탑이 조금은 멀게 보이는 숙소와 함께, 동네 카페에서 커피와 빵을 먹으며 책도 읽어야 하고,

    베네치아에서 유리 체스판을 앞에 두고 산책도 해봐야 한다.

    사무 공간에 앉아 일을 하는 것도 충분히 가치있는 일이지만 나는 세상에서 더 많은 경험을 하기 위해 조금이라도 빨리 퇴사를 하려한다.

    그러기 위해서는 어떤 로드맵을 가지고 미래를 설계 해야 할까.

  • Spring Boot를 이용한 백엔드 기초

    취업을 한지 어느덧 3달이 지나가네요. 취업만 하면 세상 행복하게 잘 보낼 줄 알았지만 생각과는 다른 삶을 보내고 있습니다. 이제 곧 백엔드 개발을 들어갈 것 같은데 원래도 개발을 깊게 할 줄 모르기도 하면서 안한지도 오래되어 다시 되새겨보고자 글을 쓰게 됐습니다.

    기존에 프로젝트를 모두 스프링 부트로 진행했기에 다시 한번 가장 간단하게 Controller, Service, Repository를 만들어 보고자 합니다.

    Controller의 역할

    Controller는 api 요청이 들어왔을 때, 적절한 Service를 호출하여 응답을 처리하는 역할입니다. 비유하자면 어느 Service에서 처리할 지 길을 알려주는 역할을 합니다. 예를 들어, ‘/login’ 엔드포인트 요청이 들어오면 아래와 같이 처리됩니다.

    @RestController
    public class UserController {
    
        private final UserService userService;
    
        public UserController(UserService userService) {
            this.userService = userService;
        }
    
        @GetMapping("/login")
        public String getName() {
            return userService.getName();
        }
    
    }
    Java

    Service의 역할

    비즈니스 로직을 처리하며 데이터를 가공하거나 Repository를 호출하여 데이터베이스로부터 데이터를 조회하는 역할을 합니다. DB가 구축되지 않은 상황이라면 아래와 같이 Map 자료구조를 활용하여 임시 데이터를 사용할 수 있습니다.

    @Service
    public class UserService {
        
        private final UserRepository userRepository;
    
        private final Map<Integer, String> db = new HashMap<>();
    
        public UserService(UserRepository userRepository) {
        // Repsitory 사용시
        this.userRepository = userRepository;
        
        // Repository 미사용시
        db.put(1, "Pizza");
        db.put(2, "Chicken");
    
        }
    
        public String getName() {
            return db.getOrDefault(1, "Unknown");
        }
    
    }
    Java

    Repository의 역할

    데이터베이스와 상호작용하는 역할을 합니다. JPA, MyBatis 등을 활용하여 실제 DB와 연결할 수 있습니다.

    @Repository
    public interface UserRepository {
        public String getName();
    }
    Java

    Repository는 interface로 작성해야 합니다. JPA를 사용한다면 아래와 같이 작성할 수 있습니다.

    @Repository
    public interface UserRepository extends JpaRepository<UserEntity, Long> {
         // 쿼리 작성
    }
    Java