Backend

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..
안녕하세요~😄 오늘은 YOUTUBE 개발바닥 영상을 보던 중에 N + 1 문제라는 키워드가 환기되어 현재 진행 중인 프로젝트에서 N + 1 문제가 발생되고 있는지 확인해 보고 2가지 방법으로 해결해 보도록 하겠습니다. 가이드 && 환경 💡 SpringBoot 3.2.2 , SpringDataJPA, Hibernate 💡 Tag Entity, Category Entity, N+1 문제 확인 💡 해결방법 1. Fetch Join, 2. @EntityGraph 사용하기 💡 성능향상 점검 💡 결론 문제 인식 ✅ 먼저 Postman을 사용하여 자주 사용하는 Rest API를 모두 호출해 보았습니다. ✅ 그중 사용빈도가 매우 높은 "모든 태그를 불러오는 기능"에서 Tag , Category 두 엔티티의 연관관계에서..
안녕하세요!😄 오늘은 저번 시간에 설정했던 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..
안녕하세요. 저번 포스팅에서 좋아요 기능을 구현해 봤는데요. 생각해봤을때 화면 이동할때 마다 likeCount를 DB에 접근해서 불러오는게 매우 비효율적이라고 느껴져서 Redis를 한번 도입해 보기로 했습니다. 이번 포스팅은 좋아요 기능호출 이전단계인 설치 & Test 통과를 목표로 해보도록하겠습니다~ 가이드 & 환경 SpringBoot3.2.2 Redis 설치 Ec2 인스턴스에 Docker를 이용한 Redis 설치 Ec2 인스턴스 보안 규칙 변경 Redis CRUD Test Issue 오늘은 체크박스 2번인 구현 및 테스트까지 준비해봤습니다!! Test 환경 조성 💡 gradle 의존성 및 YML 파일 설정 implementation 'org.springframework.boot:spring-boot-..
안녕하세요~ 오늘은 읽는곳곳 프로젝트에 공유 독후감을 등록했을 때 좋아요 기능도 있었으면 좋겠다! 싶어서.. 포스팅을 하게 되었습니다. 좋아요 기능을 해본 적은 있지만 숙련되지는 못해 나중에 더 좋은 방법이 있다면 업데이트하도록 하겠습니다. 요구사항 & 정리 요구사항은 아래와 같습니다. > 한 독후감에 1개의 좋아요만 가능하다. > 즉 좋아요 상태의 유무 관리가 필수 여기서 Review에 좋아요 카운트 칼럼을 만들어서 직접 하면 안 되냐 생각하실 분도 계시겠지만 중복으로 좋아요가 가능하고 상태 관리를 할 필요가 없다면 그러셔도 될 것 같습니다. 하지만 좋아요를 누를 때마다 DB에 접근하여 Update를 직접 해주어야 하는 것은 비효율적이라고 생각되기에 캐시나 배치 등 여러 방법을 통한 자신만의 최적화 방..
오늘은 기업 1차 면접에서 코드리뷰를 하게 되었는데요. 당연하게 생각했던 것들 중 인사이트를 얻게 된 것들이 많아서 좋은 경험이었던 것 같습니다. 궁금해지기도 해서 공부할 겸 포스팅을 계획하게 되었습니다. 가장 기억에 남았던 질문(내가 대답하지 못한 질문) 2가지를 가져왔습니다. Private final은 왜 붙이신 건가요? 안 붙인다고 Service가 바뀌나요? 독후감을 등록하는데 많은 기능들이 있는데 Tag등록 부분에서 오류가 나면 모두 롤백돼야 하는 게 정상 아닌가요? 이렇게 분리되어 있으면 이전의 기능들은 롤백 안되지 않나요? 리뷰 코드 @RestController @RequiredArgsConstructor public class ReviewController { private final Pin..
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..
AWS S3 Bucket을 이용한 이미지 업로드 + CloudFront설정 안녕하세요! 오늘은 Interior 프로젝트를 진행하면서 웹 서비스에서 이미지를 효과적으로 보여주기 위해 AWS의 S3 버킷과 CloudFront를 활용하는 방법에 대해 자세히 알아보도록 하겠습니다. S3의 여러 가지 장점이있는데요 ❗ ❗ 💡 내구성과 안정성: AWS의 S3는 데이터의 내구성과 안정성을 보장합니다. 데이터가 여러 복제본에 걸쳐 저장되므로 데이터 손실 우려가 줄어듭니다. 💡 확장성: S3는 거의 무한한 확장성을 제공하므로 대용량 데이터를 저장하고 처리할 수 있습니다. 💡 다양한 데이터 관리 기능: 버전 관리, 암호화, 액세스 제어 등 다양한 데이터 관리 기능을 제공하여 데이터를 보다 효율적으로 관리할 수 있습니다. ..
안녕하세욥~! Spring Boot 프로젝트들에서 API키 값을 사용하다 보니 보안이 중요한 설정 값들을 안전하게 관리할 필요성을 알게되었는데요. 특히, 외부에 노출되면 안 되는 중요한 정보들을 암호화하여 관리할 필요가 있습니다. 이번에는 애플리케이션에서 @Value 어노테이션을 사용하여 암호화된 설정 값을 어떻게 관리할 수 있는지 살펴보겠습니다. 암호화 파일 설정 먼저, 애플리케이션의 설정 파일에 암호화된 설정 값을 추가해야 합니다. 여기서는 secret.yml 파일을 예로 들어 설명하겠습니다. 이 파일은 중요한 설정 값들을 보관하는 곳으로, 암호화된 JavaScript키 를 저장하는 예시를 들어보겠습니다. spring: datasource: url: jdbc:mariadb://localhost:330..
안녕하세요! 오늘은 Spring Boot와 JPA를 사용하여 사진 업로드 기능을 구현하는 방법에 대해 이야기해보려고 합니다. 파일 업로드는 웹 애플리케이션에서 자주 사용되는 기능 중 하나입니다. 이 포스트에서는 사용자로부터 받은 사진 파일을 서버에 저장하고, 해당 정보를 데이터베이스에 기록하는 과정을 설명하겠습니다. 기본 설정 먼저, application.properties 혹은 application.yml 파일에 파일을 저장할 경로를 지정합니다. 아래는 제가 실제로 지정한 경로입니다. C드라이브 아래 workspace/{프로젝트이름}/upload/ 로 설정하였습니다. file: path: C:/workspace/interior/upload/ Cover 엔티티 사진 정보를 데이터베이스에 저장하기 위해 C..
발달중인 망고
'Backend' 카테고리의 글 목록