전체 글 175

오류 처리 / API 예외 처리

1. @ResponseStatus ResponseStatus를 사용하면 설정해 준 내용으로 에러를 반환해준다. 이를 시험하기 위해 BadRequestException이라는 Exception을 만들어본다. ApiExceptionController.java ... @Slf4j @RestController public class ApiExceptionController { @GetMapping("/api/response-status-ex1") public String responseStatusEx1() { throw new BadRequestException(); } ... @Data @AllArgsConstructor static class MemberDto { private String memberId; ..

Sliding window

코딩 테스트를 매일은 아니지만 LeetCode 에서 나름 그 주마다 몇개씩, 풀려고 했었다. 그런데 무언가 누간가의 도움이 필요 했으면 해서 최근에 inflearn의 자바 알고리즘 문제풀이를 이용해서 공부를 진행중이다. 이 강의를 이용하여 공부하던 중에 sliding window라는 말을 들었다. 코드를 미끄러지는 창문처럼 해결하도록 알고리즘을 구성한다는 것 같은데... 하여간 이곳에서 소개한 문제중 하나를 긁어왔다. 설명 현수의 아빠는 제과점을 운영합니다. 현수 아빠는 현수에게 N일 동안의 매출기록을 주고 연속된 K일 동안의 최대 매출액이 얼마인지 구하라고 했습니다. 만약 N=10이고 10일 간의 매출기록이 아래와 같습니다. 이때 K=3이면 12 1511 20 2510 20 19 13 15 연속된 3일..

오류 처리 / Bean Validation

1. What is Bean Validation Bean Validation이란 무엇인가? 다음에 대한 설명을 해당 사이트에서 찾아왔다. Jakarta Bean Validation is a Java specification which lets you express constraints on object models via annotations lets you write custom constraints in an extensible way provides the APIs to validate objects and object graphs provides the APIs to validate parameters and return values of methods and constructors reports..

오류 처리 / validation & bindingResult

Spring에서 에러를 어떻게 처리하는지 제대로 기억하고 사용하기 위해 이 글을 정리한다. BindingResult는 검증 오류가 발생할 경우 오류 내용을 보관하는 스프링 프레임워크에서 제공하는 객체다. 1. BindingResult 사용하기 - addError // @PostMapping("/add") public String addItemV3(@ModelAttribute Item item, BindingResult bindingResult, RedirectAttributes redirectAttributes, Model model) { log.info("objectName={}", bindingResult.getObjectName()); log.info("target={}", bindingResult..

@Entity 설정 Annotation 정리

혼자 인터넷에서 뒤져가면서 내 공부용 미니 프로젝트를 위한 스키마를 생성하고 테이블들의 연관관계를 Java Persistence API를 이용해서 작업중이다. 근데 작업하는 와중에 많은 기능이 있었다. 문제는 이것을 잘 사용해야 하는데 이번 기회에 다시 집고 넘어가려고 한다. 필자는 다음과 같은 ERD를 이용해서 Mapping을 시도했다. 1. @MappedSuperclass vs @Embedded & @Embeddable @MapppedSuperClass는 공통 매핑 정보가 필요할 때 사용한다. 쇼핑몰에서 우리가 물건을 구매할 때 회원 가입시 입력한 기본 주소를 그냥 쓸 수도 있지만 여러곳에서 물건을 수령할 수도 있다. 즉, 실제로 저장한 주소들과 내가 받을 곳의 주소들은 일치할 수도, 다를 수도 있다..

Spring/JPA 2022.03.17

DB 개념 + JPA concurrency control

필자는 금일 전화면접을 보았다. 여기서 질문을 몇개 하셨는데 대답을 잘 못했다!(슬픔...) 하지만 괜찮다.... 절망만 하지 말고 이에 대한 정보를 최대한 찾아서 내것으로 만들어 보겠다. 오늘은 이와 관련된 정보를 찾아서 정리하겠다 1. Transaction이란? 트랜잭션이란 무엇일까? 데이터베이스의 상태를 변화시키기 위해 수행하는 작업 단위이다. DB의 상태를 변형시킨다는 이야기는 무엇일까? SELECT, UPDATE, INSERT, DELETE와 같은 행동을 뜻한다. 트랜잭션에는 4가지의 특징이 있다. 원자성 : DB에 모두 반영되거나, 전혀 반영되지 않거나한다! 일관성 : 작업 처리의 결과가 항상 일관되어야 한다. 독립성 : 하나의 트랜잭션은 다른 트랜잭션에 끼어들 수 없고 마찬가지로 독립적이다 ..

Spring/JPA 2022.03.14

Json Web Token (JWT)

1. Cookie vs Session vs JWT Http의 가장 큰 특징은 비연결성, 무상태성이다. 즉, 한번 요청과 응답을 통하면 똑같은 일을 하기 위해서라도 동일한 정보를 전송하고 받아야 한다는 말이다. 이를 보완하기 위해 나온 기술이 Cookie와 Session이다. 이 장에서는 아주 핵심만 간략하게 설명하겠다. Cookie 웹사이트 접속시 접속자의 개인장치에 다운로드 되고 브라우저에 저장되는 작은 텍스트 파일. key - value형태. 장점 : client측에서 데이터를 저장 => server부담 없음 단점 : client에서 마음데로 조작이 가능. 용량이 작음 Session 일정시간동안 같은 사용자(정확하게 브라우저를 말한다)로 부터 들어오는일련의 요구를 하나의 상태로 보고 그 상태를 일정하..

Filter vs HandlerInterceptor - 간단 logging 기능 구현

저번에 Filter 와 HandlerInterceptor의 차이점에 대해서 공부를 해보았다. https://tech-monster.tistory.com/119 Filters vs HandlerInterceptors - 개념 오늘은 filter와 interceptor에 대해서 정리하려고 한다. 둘 다 기능은 비슷한데 어떤 차이가 있는지 잘 모르겠다! 그래서 이번 기회에 정리하려고 한다. 1. Filter J2EE의 표준 스펙 기능.(Springframework의 tech-monster.tistory.com 이번에는 이것들을 직접 구현해서 적용해볼 것이다. 1. Filter 적용해보기 filter를 먼저 적용해보려고 한다. 들어오는 모든 요청과 응답을 로그로 남겨볼 것이다. controller, LogFil..

Filters vs HandlerInterceptors - 개념

오늘은 filter와 interceptor에 대해서 정리하려고 한다. 둘 다 기능은 비슷한데 어떤 차이가 있는지 잘 모르겠다! 그래서 이번 기회에 정리하려고 한다. 1. Filter J2EE의 표준 스펙 기능.(Springframework의 기능이 아님). filter는 인터페이스로 선언되어있다. Oracle에서는 다음과 같이 설명한다. A filter is an object that performs filtering tasks on either the request to a resource (a servlet or static content), or on the response from a resource, or both. Filters perform filtering in the doFilter me..

MySql 초기 세팅

1. MySql 다운로드 받기 (8.0.28) mysql 다운로드를 받기 위해 다음 사이트를 참고했다. 참고 : https://m.blog.naver.com/bjh7007/221829548634 위의 사이트에서 다운을 하라는 방식으로 우선 삭삭삭 진행을 했다. 2. 비밀번호를 잃어버렸다면? 아니... 나는 다운을 받고 몇일 있다가 오늘 한번 접속해 봐야겠다 하고 접속을 하려했는데 비밀번호를 잃어버리고 말았다. 가희 금붕어의 기억력에 필적하는 나의 기억력... 무엇? 하여간... 잃어버린 비밀번호를 찾기는 좀 힘들고 이것을 text파일을 이용해서 세팅이 가능하다. 우선 local instance MySQL80을 클릭하면 사용자 이름과 함께 무엇을 입력하라고 나온다. 처음에는 특별한 설정을 하지 않았으면 r..

DB/MySql 2022.02.27