Java

Subscribe, Follow 기능 구현 & JPQL new operator 사용법 안녕하세요😁~ 오늘은 구독(Subscribe, Follow) 기능을 구현해 보고 해당 User에 대한 Follower Data를 전달해 주는 RestAPI를 구현해 보도록 하겠습니다~. 오늘 포스팅의 핵심은 아래 💡 팔로워 목록 쿼리 구현 (SQL, JPQL) 부분입니다. 가이드 && 환경 본 포스팅은 아래의 환경 및 가이드를 따라갑니다~ - 💡 SpringBoot 3.2.2, SpringDataJPA, JPQL - 💡 Subscribe Entity - 💡 구독, 구독 취소 구현 - 💡 팔로워 목록 쿼리 구현 (SQL, JPQL) - 💡 테스트 Issue & Entity Issue Subscribe Entity @Bui..
안녕하세요!😄 오늘은 저번 시간에 설정했던 Redis를 이용해서 조회성능이 어느 정도 향상되는지 알아보겠습니다. 가이드 & 환경 - Spring3.2.2 , Postman, Redis, EC2 - SpringBoot CacheCode - 테스트할 DTO , List - 조회 성능 차이 계산 SpringBoot Cache Code @Service @RequiredArgsConstructor public class LikesCachingServiceImpl implements LikesCachingService { private static final Logger logger = LoggerFactory.getLogger(LikesCachingServiceImpl.class); private final Li..
· SQL
오늘은 읽는곳곳 프로젝트를 하며 마주쳤던 이슈를 적어보려 합니다!! (간단 주의) 요즘 TestCode와 Refatoring을 하고 있어서 프로젝트를 들여다 볼일이 많은데요. 오늘도 Swagger로 모든 동작이 정상동작하는지 확인하다가(아직 테스트 커버리지가 높지 못해서...) 오류를 발견하게 되었습니다. 문제 상황 ❗ 바로 독서장소에 걸려있는 태그 중 상위 5개만 가져오는 API가 500 에러를 뿜으면서 죽어있는 것을 발견했습니다. ✅일단 오류 상황을 인지하기 위해서 ISSUE등록을 해주었구요. 보기 힘든 코드 이긴 하지만.. 리펙토링 과정에 있습니다.. 에러로그 ✅ 다음으로는 EC2에 접근해서 에러로그를 보았는데요. ❌ Long타입을 Integer로 강제 변환하려다 생긴 오류라고 해석되네요. 2024..
인터페이스와 구현의 분리: 느슨한 결합 오늘 유튜브로 Redis 실습 강의 영상을 보다가 우연히 실습영상에서 디렉토리 구조를 보게 되었는데요. Service 인터페이스와 ServiceImpl 구현 클래스의 분리되어 있어서 소스 코드를 좀 찾아봤습니다. 이러한 구조는 유지보수성, 확장성 및 테스트 용이성을 크게 향상시키는 핵심 원칙이며 주로 느슨한 결합(loosely coupled)이라고 불리우고 있었습니다. 느슨한 결합 자주 듣긴 했지만 그냥 넘어가기는 아쉬워서 한번 적용해보고자 합니다. (참고: 공부하고 있던 자료 :https://www.youtube.com/watch?v=WrAT8m2xlgc ) 인터페이스와 구현 분리의 이점 일단 왜 사용하는지 알고 가도록 하겠습니다. 1. 유연성과 확장성: 비즈니스..
Java 11과 17에 대하여 안녕하세요 오늘은 자바 버전차이에 대하여 포스팅하려 합니다. 2023년 기준 자바 17이 드디어 자바 11 버전의 사용율을 이겼네요. 새롭게 등장한 SpringBoot 3 버전도 자바 17 이상만 지원하기 때문에 앞으로 새롭게 등장하는 웹서비스에 대해서는 Java17을 사용할 확률이 높겠습니다. 아마두? 주요 변경 사항 ✅자바 11에서 17로 업그레이드됨에 따라 주요 변경사항을 한번 공부해 보도록 하겠습니다!! 패턴 매칭 for instanceof 자바 11: if (obj instanceof String) { String s = (String) obj; System.out.println(s.length()); } 자바 17: if (obj instanceof String ..
Swagger 사용기 안녕하세용 오늘은 프론트와 백이 협업을 하며 사용하면 좋은 Swagger에 대한 사용법을 알아보도록 하겠습니다.🙂 Swagger를 처음 접하시는 분들께 설명드리자면 Swagger는 OpenAPI 명세(OpenAPI Specification, OAS)의 핵심 도구 중 하나입니다. OpenAPI는 RESTful API를 위한 API 설계에 대한 표준 언어 및 프로세스를 정의합니다. 이 명세는 API의 모든 측면을 기술적으로 설명하여 API의 기능을 정확히 이해하고 올바르게 사용할 수 있게 합니다. 본 프로젝트는 Java 17 , SpringBoot 3.2.2 , gradle 8.5 버전을 사용합니다. 의존성 추가 아래의 의존성을 사용해 줍니다. implementation 'org.spr..
안녕하세요! 오늘은 BigInteger 를 사용하는 방법에 대해 이야기해보기위해 하노이탑의 문제를 예시로 들려고 합니다. 특히, BigInteger 를 사용할 때 주의해야 할 점들과, 입력값이 매우 큰 경우(예: 100)에 대한 처리 방법에 대해 살펴보겠습니다. https://www.acmicpc.net/problem/1914 1914번: 하노이 탑 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 www.acmicpc.net BigInteger 사용의 핵심 이유 input : 100 output : 1267650600228229401496703205375 자바에..
안녕하세요! 오늘은 Spring Boot와 JPA를 사용하여 사진 업로드 기능을 구현하는 방법에 대해 이야기해보려고 합니다. 파일 업로드는 웹 애플리케이션에서 자주 사용되는 기능 중 하나입니다. 이 포스트에서는 사용자로부터 받은 사진 파일을 서버에 저장하고, 해당 정보를 데이터베이스에 기록하는 과정을 설명하겠습니다. 기본 설정 먼저, application.properties 혹은 application.yml 파일에 파일을 저장할 경로를 지정합니다. 아래는 제가 실제로 지정한 경로입니다. C드라이브 아래 workspace/{프로젝트이름}/upload/ 로 설정하였습니다. file: path: C:/workspace/interior/upload/ Cover 엔티티 사진 정보를 데이터베이스에 저장하기 위해 C..
안녕하세요! 오늘은 JPA를 사용하여 데이터베이스 모델을 구축할 때 자주 마주치는 무한 참조 문제와 이를 해결하는 방법에 대해 이야기하려고 합니다. 특히, @JsonIgnoreProperties 어노테이션을 사용하여 양방향 관계에서 발생하는 무한 참조 문제를 해결하는 방법을 살펴보겠습니다. 문제 상황 데이터 모델에 양방향 관계가 있는 경우, 예를 들어 Album과 Image 엔티티가 서로를 참조하는 경우, JSON 으로 직렬화할 때 무한 참조 문제가 발생할 수 있습니다. Jackson 라이브러리는 객체를 JSON 으로 변환할 때 이러한 양방향 참조를 처리하지 못하고 무한 루프에 빠질 수 있습니다. 문제의 예 Album 엔티티와 Image 엔티티가 서로를 참조하는 구조는 다음과 같습니다. @Entity p..
안녕하세요. 오늘은 Spring Framework를 사용하면서 자주 마주치는 MissingPathVariableException에 대해 알아보고, 이 문제를 해결하는 방법을 공유하고자 합니다. 오류 개요 MissingPathVariableException은 Spring MVC에서 컨트롤러의 메서드가 URI 경로 변수를 요구하는데, 실제 요청 URL에 해당 변수가 포함되지 않았을 때 발생합니다. 에러 메시지는 다음과 같습니다 .w.s.m.s.DefaultHandlerExceptionResolver: Resolved [org.springframework.web.bind.MissingPathVariableException: Required URI template variable 'id' for method p..
발달중인 망고
'Java' 태그의 글 목록