기술25 빌더패턴 제네릭 클래스에 적용하기 Generic @Getter @Builder @AllArgsConstructor public class ResponseDto { private String status; private String message; private T data; } 코드를 구성하다보면 제네릭으로 빌더를 해주고싶은 경우가 있다. 근데 그냥 막 하려고 하면 뭐가 자꾸 빨간줄이 뜬다. 이렇게 하면 된다. ResponseDto.builder() .status("success") .message("사용자 정보 요청 기능 수행") .data(userService.getUserInfo(userDetails)) .build() 특이하게도 builder 앞에 제네릭 타입이 붙는다. 이렇게 해주면 된다. 재밌는 정보라 적어봤다. 그럼이만! 2021. 12. 24. JPA에서의 페이징 기법, 빠를까? unique record의 Paging과 n번의 find 코드를 개선하려고 살펴보던 중 궁금한 점이 생겼다. MySQL DB에 페이징을 시도할 때, findAll은 limit에 해당하는 레코드의 수를 탐색하고나면 그 즉시 중단할까? 아니면 전부 탐색하고 정해진 데이터 개수만 잘라서 출력해주는 것일까? 결과 먼저 말하자면, 전부 탐색하고 데이터 개수만 잘라서 출력해준다. 지극히 비효율적이다. 그리고 느리다. 아래는 실험 후 찾아본 자료이다. MySQL LIMIT 최적화(feat. 구글이 검색결과를 최대 1,000건만 제공하는 이유) 제가 말하는 것이 사실도, 정답도 아닐 수 있으니 비판적으로 읽어주시면 감사하겠습니다. MySQL LIMIT 최적화하는 방법 MySQL에서 페이징 처리를 위하여 LIMIT 키워.. 2021. 12. 23. [QueryDSL/SpringBoot] Gradle에서의 QueryDSL 설정 QueryDSL QueryDSL에 대한 정보는 많다. pom.xml 쓰던 시절에 쓰던 정보 말이다. 근데 Gradle에서 어떻게 시작해야 하는지는 잘 안 나와있다. 심지어 공식문서도 Getting Started에 Gradle에서 사용하는 방법에 대해서는 명시되어 있지 않다. 오이오이, '공식문서'쿤... 장난하는 거지.....? '모두'의 '희망希望' 인 네가 이렇게 나온다구.....? 허 참..... 내 살다살다 이렇게 정보가 모든 곳이 제각각인 것은 처음본다. 스프링부트의 maven과 gradle에 대한 정보가 섞여나오는 것 뿐 아니라, QueryDSL 설정에 대해서도 사람마다 전부 뒤죽박죽으로 되어있어서 알맞는 방법을 찾는게 어려웠다. 정말. 그래서 여러 사이트를 많이 헤멨고 그만큼 실수 하기도 했.. 2021. 12. 10. JPA에서 쓰는 페이징(Paging) 기법이 뭘까? 페이징(Paging) 가끔 궁금한 생각이 들었을 것이다. 커뮤니티의 게시판이나, 구글의 검색 결과는 페이지로 구분이 되는데, 이건 어떤 원리로 동작하는걸까? 라는 궁금증 말이다. 한 걸음 더 나아가서, 이런 기능들을 개발자들이 많이 원하고 있는데, 과연 스프링부트에서 지원하지 않고 있을까? DB에서 지원하지 않고 있을까? 하는 생각을 품어본 적이 있을 것이다. 나도 그랬다. 그래서 찾아보니 실제로 이 기능을 지원해주고 있었다. 이게 바로 페이징(Paging) 이다. 우선, 지원하는 페이징이 아니라 실제 페이징은 어떻게 구현되고 있는지를 알아야 이해하는데 도움이 될 것이다. 기본적으로 페이징이라는 것은, 데이터베이스에 한정된 양의 레코드를 요청하는 것을 말한다. 전체를 찾되, 정해진 양 만큼만 찾도록 요청.. 2021. 12. 9. @Autowired는 왜 별로일까? @Autowired 스프링에서 의존성을 주입하는 방법은 여러가지가 있다. 의존성 주입이 뭔지 잘 모르겠다고? 이걸 보고오면 된다. 의존성 주입(DI)이 뭘까? DI(Dependency Injection) 스프링 용어를 찾아보다보면 가장 먼저 접하고 매우 빈번하게 보게 되는 단어가 바로 DI다. 의존성 주입. 이게 대체 뭘 하는 녀석일까? 이것에 대해 설명하려면 IoC Container라는 dazbee.tistory.com 아무튼, 여러가지 방법 중, @Autowired는 필드 또는 메소드에 생성자를 자동으로 주입해주는 녀석이다. 근데, 이 편리한 기능. 쓰면 별로 안 좋다고 한다. 왜 그럴까? 결론부터 말하자면, 런타임 시점에 도달하기 전까지는 감지할 수 없는 문제가 발생할 수 있기 때문이다. 그게 뭐냐.. 2021. 11. 28. 의존성 주입(DI)이 뭘까? DI(Dependency Injection) 스프링 용어를 찾아보다보면 가장 먼저 접하고 매우 빈번하게 보게 되는 단어가 바로 DI다. 의존성 주입. 이게 대체 뭘 하는 녀석일까? 이것에 대해 설명하려면 IoC Container라는 스프링의 핵심 구성요소에 대해 알아야 한다. 설명하자면 시간이 오래 걸릴테니, 시간이 부족한 분들을 위해 정말 간략하게 IoC Container가 뭔지 설명을 하자면, 제어 반전 컨테이너(Inversion of Control Container)의 약자로, 오브젝트를 관리해주는 스프링의 객체인 BeanFactory 또는 ApplicationContext를 이용해서 사용자가 만든 객체를 자동으로 호출해 Bean으로 등록해 사용하게 해주는 것을 말한다. 여기서 핵심은, 일반적으로 .. 2021. 11. 28. 이전 1 2 3 4 5 다음