본문 바로가기

공부46

예외와 응답 원리에 대한 글은 아니고 기억 차원에서 스프링 MVC로 웹 개발을 하며 경험한 컨벤션을 간략히 기록하고자 한다. ---컨트롤러의 응답[1] 형식은 두 가지로 나뉜다. ResponseBody 혹은 ResponseEntity를 사용하는 방법이다. 단 후자의 경우가 HTTP 상태코드, 헤더를 세팅하기 수월해서 정상 응답 외 예외 발생의 경우에도 장점을 가진다고 생각한다. 단 예외 처리의 경우에는 정상 응답처럼[2] 컨트롤러에서 응답을 생성해주지 않고, 예외 처리 핸들링 클래스(@RestControllerAdvice)를 따로 작성해 스프링부트 애플리케이션에서 전역적으로 발생하는 예외를 처리해준다. 다만, 신규 구축의 경우가 아니어서인진 몰라도 컨트롤러에서 정상 응답 및 예외 발생 시 응답에 대해서도 모두 작성해.. 2025. 4. 12.
분기문 제거 좋은 글을 읽고, 기억하기 위한 용도로 남긴다. --- 지금까지 SI, SM을 하며 한 메소드 내 수백, 많게는 수천줄의 코드는 일상적이었다. 이런 코드는  수많은 분기문이 있었고 파악하기 쉽지 않았다. 자바 언어의 객체 지향을 활용한 디자인 패턴들이 적용된 깔끔한(?) 코드는 보기가 어려웠다. 그러던 중 최근에 참여했던 이커머스 프로젝트에서 팩토리 패턴[1]이 적용된 걸 봤다. 구체적인 로직은 기억이 안 나는데, 인입 채널에 따른 고객정보 생성/변경 정도였던 것 같다. 화면에서부터 개략적인 흐름을 적어보자면, // Controller 메소드 내private final AFactory aFactory;private final AService aService;Abstract abstract = aFacto.. 2025. 4. 10.
조회 성능 조회 쿼리 작성 시 SI 초반에는 정확한 데이터를 갖고 오는 게 중요하겠지만, 실데이터가 어느 정도 들어오는 단계에서는 조회 성능이 중요했던 거 같다. 실제로 잘 동작하던 화면이 어느 날 동작을 안 해서 확인해보면 조회 쿼리 성능이 안 나오는 경우가 많았다[1][2]. 가장 최근 경험으로는 통계 화면 관련해서 쿼리 속도가 안 나왔던 적이 있다. 정확한 내용이 기억이 안 나긴 하는데... 처음 작성했던 쿼리가 무척 길었다. 최대한 단순화 시켰고, 다행히 여기서 속도가 좀 돌아왔던 거 같다. 하지만 여기서 속도가 안 나온다면 실행 계획을 확인해보고, 인덱스 생성을 고려해봐야 한다. 인덱스, 힌트 같은 건 BI 프로젝트에서 Oracle을 사용할 때 주로 경험(많이 듣기만...)했었는데 최근 PostgreSQL.. 2024. 11. 5.
Database 경험 많지 않은 IT 경력이지만, 이것저것 몇 가지 관계형 DB(정확히 말하면 DBMS..)를 다뤄보았다. 사실 기껏해봐야 CRUD를 주로 한 거라 구글 검색, 조금 복잡한 건 CHAT GPT로 작성해서 사용했으나 뒤늦게 공부도 할 겸 모르면 모르는대로 조금 남겨본다. 사실 몇 군데 면접을 가면 요즘 때로 DB 차이를 묻기도 해서... Oracle맨 첫 직장에서 주로 사용했었고, 대기업에서 주로 사용한다고 한다(최근 대기업에서는 사용하진 않긴 했는데..).하나의 인스턴스 내 여러 데이터베이스가 아닌 전체 데이터베이스가 존재한다(따라서 쿼리 작성 전에 USE 명령어 사용할 필요 없다). 다만 타 DB와 다르게 User(물리적 컨테이너)와 Schema 개념이 있는데[1][2], 사용자는 스키마를 기준으로 작업을 .. 2024. 11. 5.