MapleStory Finger Point
MyBatis와 Entity 생성자에 대한 고찰
·
SPRING
이번에 프로젝트 설계부터 개발까지 모두 진행하게 되었다. 설계할 때, 중요한 요소 중 하나인 코드컨벤션을 작성하고 있는데, 4개의 프로젝트를 진행하면서 가장 규격을 세우고 싶었던 게 바로 MyBatis에서 Entity 매핑할 때 적합한 어노테이션과 생성자를 정의하는 것이였다. 왜냐면 많은 사람들이 너무나도 다르게 Entity를 선언하고 있었다. 누구는 @Data를 쓰고 누구는 @AllArgsConstructor를 쓰고 이러다 보니 유지보수할 때, 어떤 방식을 따라가야 할지? 어떤 게 적합한지? 의문이 들었다. 그래서 오늘은 MyBatis에 활용하기 위한 Entity를 선언할 때, 어떤 방식이 적합할지? 한번 알아보자! MyBatis는 Entity 매핑을 어떻게 하는가?어떤 방식이 적합한지 파악하기 앞서,..
실무 예제로 배우는 Template Method Pattern
·
SPRING
여느 때와 같이 운영업무를 진행하고 있었는데, 특정 필드의 수정이력을 쌓아달라는 요청이 왔다.그래서 우리 프로젝트의 History를 쌓는 로직을 살펴보고 있었는데, 도서에서만 접한 Template Method Pattern이 적용되어 있었다. 그래서 이번 주제는 Template Method Pattern에 대해 간단하게 설명하고 실무에 적용된 Template Method Pattern 예제를 통해 도입을 고민하는 분들에게 조금이나마 도움을 주고싶다. Template Method Pattern 설명GoF의 디자인 패턴 도서에서는 템플릿 메서드를 아래와 같이 정의하고 있다."템플릿 메서드 패턴은 알고리즘의 골격을 정의하고, 일부 단계를 서브클래스에서 구현하도록 한다. 즉, 알고리즘의 구조는 변경하지 않으면서..
LIKE Wildcard 검색을 막아보자(MySQL, MyBatis)
·
SPRING
크리스마스 기념으로 글을 발행하려고 한다. 다들 크리스마스라고 어디 나가지말고 집에서 개발 공부를 해보자!! (경험치 2배 이벤트) 이전 글에서 SQL Injection에 대해 자세하게 알아보았다. SQL Injection (MyBatis, SQL LIKE 절)회사에서 프로젝트를 진행하면서 SQL Injection 이라는 공격에 처음으로 당해보았다.다행히도 아직 오픈 전이라 십년감수했다.. ^ 3^ 그래서 이번 주제는 SQL Injection은 뭔지? 그리고 MyBatis, 쿼리 문에mjoo1106.tistory.com다양한 공격 방법 중, 실제 프로젝트에 적용한 LIKE wildcard 공격을 막을 수 있는 방법을 소개하고자 한다.하지만, 이전 글을 보지 않고 바로 해당 게시물에 진입한 독자들도 있으니..
Spring AI를 사용해보자.
·
SPRING
오늘은 사내프로젝트에서 사용했던 Spring AI에 대해 소개하고 간단한 실습을 해보려고 한다!사실 공식문서가 엄청나게 잘되어 있어서 개념 설명보다는 실습 위주로 풀어나가겠다~~  Spring AI ? AI Engineering, AI Serving과 관련된 작업을 할 때, 대표적으로 python을 많이 사용하고 있다. 그런데, 이제 스프링에서도 Serving 정도는 간단하게 작업할 수 있다!! 즉, AI Engineering을 위한 애플리케이션 프레임워크라고 생각하면 된다. 공식문서에 의하면 해당 프레임워크의 핵심은 기업 데이터와 API를 AI 모델과 연결하는 AI 통합이다.  Spring AI의 특징은 공식문서에 상세하게 나타나있어 여기에는 담지 않겠다 ㅎ(https://spring.io/projec..
[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()를 사용할 수..
정적 팩토리 메서드(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를 제공합니다. 제공중인 오픈 ..
📌 공지사항

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

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

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

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


📧 mjoo1106@naver.com