MapleStory Finger Point
[MyBatis] Loop vs Subquery vs Inner Join
·
SPRING
요즘 회사 프로젝트 때문에 엄청 바쁜 하루를 보내고 있다. 지금 하는 프로젝트를 간략하게 설명하자면, PHP로 되어있는 AS-IS를 Java / Spring Boot + Vue typescript 로 마이그레이션 하는 작업을 하고 있다. 애니웨이, 이전 코드(PHP)를 그대로 옮기다 이상한 점들을 발견하게 되었고, 이를 어떻게 개선하면 좋을지 고민했던 내용과 어떻게 수정했는지 이번 게시물에 담고자 한다.문제 상황 1. 특정 조건에 의하여 product_id를 Select 해온다.SELECT product_id FROM shipping_product WHERE owner_id IN (1,2,3,4 ...)2. 1번의 결과 값을 List에 담는다.3. List의 길이가 만 이상이면 500개 씩 n개의 ar..
MyBatis에서 Helper 클래스 적용하기 (StringUtils, CollectionUtils...)
·
SPRING
오늘은 회사 프로젝트를 진행하면서 생긴 이슈와 이를 해결하기 위한 일종의 회고를 써보려고 한다. SI 회사에서 업무를 진행하다보니, MyBatis를 좀 많이 쓰는 것 같다. 일단, 프로젝트를 부탁하는 곳에서 JPA 보다 좀 더 직관적으로 쿼리문을 살펴볼 수 있는 MyBatis를 선호하는 경향이 있는 것 같다. 그래서 필자는 회사 경험에서 JPA를 써본적은 없고 MyBatis만 써보았다. 그러다보니 MyBatis에서 좀 더 효율적으로 코드를 작성할 수 있는 방법을 많이 찾게 되었다. 이번 글은 단순 호기심에서 해결 방안까지 도출한 경험을 작성하려고 한다! 꽤 유용한 내용도 있으니 재미있게 이 글을 봐주셨으면 좋겠다. (알쓸신잡 느낌 ㅎ)  동적 쿼리문에서 StringUtils.hasText()를 사용할 수..
Java에서 Stack Class는 함정카드다.
·
JAVA
프로젝트를 진행하다가 Last In First Out과 같은 자료구조를 활용한 경험이 있다.그래서 Stack을 사용하려고 했는데, 얼핏 누군가가 나에게 "Java Stack은 지양해주세요." 라는 말을 했던 것 같다..  Java에서 Stack 사용을 왜 지양해야하는지, 공부했던 내용을 공유하고자 한다.Stack은 무엇인가요? 스택에 대한 내용은 이미 잘 아시겠지만~ 리마인드 차원에서 간단하게 짚고 넘어가보자!스택은 한 쪽 끝에서만 자료를 넣거나 뺄 수 있는 선형 구조이며 Last In First Out 매커니즘을 가지고 있다. Java에서 간단한 Stack 사용법을 보자면..import java.util.Stack;// initStack st = new Stack();// pushst.push(1);s..
정적 팩토리 메서드(Static Factory Method) 맛보기
·
SPRING
이번에 프로젝트를 진행하면서 정적 팩토리 메소드를 도입해보았는데, 동료들에게 꽤 좋은 평가를 받아 이번 주제로 글을 작성해보려고 한다..!! 이번 글을 한줄 요약하자면 정적 팩토리 메소드란 무엇이고 도입 배경을 소개하는 것이다. 정적 팩토리 메소드 정적 팩토리 메소드는 23개의 디자인 패턴을 수록한 'GoF' Design Patterns에서 소개하고 있는 팩토리 메서드를 응용한 디자인 패턴이라고 생각하면 된다. 오호라.. 그렇다면 팩토리 메소드를 이해하지 않고는 정적 팩토리 메소드를 이해하기란 어렵다는 말씀?! 꼭 그렇지는 않지만 완전한 이해를 위해 GoF 디자인 패턴 책에서 소개하고 있는 "팩토리 메서드"를 먼저 알아보고 "정적 팩토리 메서드"에 대해 설명하겠다. 팩토리 메서드(Factory Metho..
Naver Open API 연결 어렵나?
·
SPRING
요즘 프로젝트가 끝나서 여러가지 삽질을 하고 싶어졌다!! 그러다 문득, 학부생 때 네이버 지도와 연결하는데 실패한 경험을 떠올렸다. 그래서 이번 기회에 Naver Open API를 사용해보면서 네이버 지도 api까지 연동해보고자 한다. 오늘은 가장 쉬운? papago API를 연동해보고자 한다. 별로 어렵지 않으니 블로그 내용만 보고도 바로 적용 가능할 것이다!!! Naver Open API Setting 프로젝트에 적용하기 전에 Naver Open API 세팅을 먼저 진행해보자~ https://developers.naver.com/main/ NAVER Developers 네이버 오픈 API들을 활용해 개발자들이 다양한 애플리케이션을 개발할 수 있도록 API 가이드와 SDK를 제공합니다. 제공중인 오픈 ..
Java 8 Functional Interface에 대해 알아보자.
·
JAVA
c++로 코딩 테스트를 해왔는데, 이제는 주로 사용하는 java로 바꿔야겠다고 다짐했다..!! 그런데, java로 코딩 테스트를 준비하면서 처음보는 구조의 코드를 보았다. 바로 정렬 함수인데 1 2 3 4 List testList = new ArrayList(); testList.add(3); // testList.sort((e1, e2) -> e2 - e1); 위 코드처럼 List를 정렬을 하고 있는 것이다!! 그런데 sort 함수를 자세히보면 1 2 3 4 5 6 7 8 9 default void sort(Comparator c) { Object[] a = this.toArray(); Arrays.sort(a, (Comparator) c); ListIterator i = this.listIterato..
[Spring] 서비스에 인터페이스를 구현하는 이유는 뭘까? (ServiceImpl)
·
SPRING
최근 회사에서 프로젝트를 진행한다고 글을 많이 못썼다 ㅜㅜ 그럼에도 킹명주의 백엔드 일지가 벌써 조회수가 4000회가 넘었다!! 정말 감사드립니다 ~~~ 요번 주제는 프로젝트를 진행하면서 궁금했던 부분을 다루고자 한다. 레거시 코드들을 보면 진짜 100에 99는 요런식으로 서비스를 구현할 때는 인터페이스를 항상 선언해주는 패턴을 사용하고 있었다. 그래서 나도 따라쓰긴 했는데,, 왜 인터페이스를 상속하는지 궁금해졌다. 사전 지식 해당 내용을 확실하게 이해하기 위해서는 사전 지식이 조금 필요하다. 만약 알고 있는 내용이라면 본문으로 쭈욱 스크롤!! Proxy 일단 proxy에 대해서 알고 있어야한다. proxy는 어떤 일을 대신 시키는 것! 이라고 생각하면 된다. 약간 회사버전으로 표현해보았는데, 약간은 개..
[정적 코드 분석] sonarQube 사용해보기
·
ETC
"구글 엔지니어는 이렇게 일한다" 라는 책을 읽고 있는데, 정적 분석에 대한 중요성을 강조하고 있었다. 그래서 호기심이 생겨 정적 분석을 해보고 싶었는데,, 현재 우리 팀에서는 사용하고 있지 않다.. ㅜㅜ 그래도 포기할 수 없어서 팀 몰래 코드 정적 분석 툴을 도입해보고자 한다!!! (로컬에서 나만 사용할 예정~~) 정적 분석이 뭐야? 정적 분석이란 소프트웨어 개발 단계에서 소스 코드를 실행하지 않고도 코드의 구조, 문법, 품질 등을 분석하는 것을 의미한다!! 그렇다면 굳이 소스 코드를 돌려보지 않고 분석을 하는 이유는 무엇일까? 1. 버그와 결함의 조기 발견이 가능하다. 코드를 실행하기 전 상태이기 때문에 버그를 조기에 발견하여 수정할 수 있고, 이후 소프트웨어 개발 과정에서 발생할 수 있는 비용과 시..
📌 공지사항

1. 광고 댓글 자제 부탁드립니다😭😭

2. 업무 중에는 질문 답변이 늦을 수 있습니다!

3. 초보자라 잘못된 부분이 많습니다
     많이 알려주세요😊

4. 이 블로그가 성공하더라도 광고로 수익 창출
     하지 않겠습니다🫡


📧 mjoo1106@naver.com