분류 전체보기(193)
-
pagedModel fetchJoin 적용후 redis Cache 적용시 발생하는 오류 해결
✔ 해결 PagedModel은 단순한 데이터 구조가 아닌, 페이지네이션 정보와 함께 리소스 링크 정보를 포함하고 있고 복잡한 구조를 가지고 있기 때문에 직렬화,역직렬화를 진행하는데 문제가 생긴다. 이를 해결하기 위해서는 Redis를 사용할 때 PagedModel을 직접 캐시하기보다는 JSON 형식으로 직렬화하여 저장하거나, 페이지별로 데이터를 캐시하고 페이지네이션을 처리하는 것 또한 하나의 방법이 될 수 있다.하지만 데이터만 캐시하고 후에 캐시된 데이터를 pagedModel 형태로 재조립 하는 과정은 결국에 캐시를 사용하려는 목적(서버의 성능 부하 개선)에는 부합하지 않는다고 판단하여 최종적으로 pagedModel을 사용하지 않고 page 객체를 사용하는 것으로 해결하였다. @Cacheable(value..
2024.07.23 -
pagedModel fetchJoin 적용후 redis Cache 적용시 발생하는 오류
❎ 문제발생 기존 프로젝트에서 pagedModel을 사용하라는 권고 표시가 나와서 pagedModel을 적용을 하였다. 진행하고자 하는 프로젝트에서 프로모션 관련한 api 기능은 많은 사람들이 조회할 수 밖에 없도록 설계되었기 때문에 Cache를 적용하여 성능향상에 도움이 될 수 있도록 Redis Cache를 적용하기로 하였다.@Cacheable(value = ["promotionCache"], key = "#page + '-' + #size + '-' + #sortBy + '-' + #direction")override fun getPromotionWineList( page: Int, size: Int, sortBy: String, direction: String): PagedMo..
2024.07.22 -
QueryDslSupport
✔오늘 배운 중요한 🔑 pointQueryDslSupport는 QueryDSL을 사용할 때 필요한 기본 설정을 제공하는 역할을 한다.🎯 오늘 배운 내용 QueryDslSupport란?QueryDslSupport는 추상 클래스이며 다른 클래스에서 상속하여 기능을 확장하는 데 사용됩니다. 이 경우, QueryDslSupport는 QueryDSL을 사용할 때 필요한 기본 설정을 제공하는 역할을 한다. 사용 예시 package sparta.nbcamp.wachu.infra.querydslimport com.querydsl.jpa.impl.JPAQueryFactoryimport jakarta.persistence.EntityManagerimport jakarta.persistence.PersistenceCon..
2024.07.21 -
Serializing PageImpl instances as-is is not supported 경고 발생
❎ 문제발생프로젝트 진행중 와인 프로모션 DB를 조회할때 FETCH JOIN을 사용하여 N+1 문제를 해결하려고 시도하였는데, 직렬화 관련 문제가 발생하였다.PageModule$PlainPageSerializationWarning : Serializing PageImpl instances as-is is not supported, meaning that there is no guarantee about the stability of the resulting JSON structure! For a stable JSON structure, please use Spring Data's PagedModel (globally via @EnableSpringDataWebSupport(pageSerializatio..
2024.07.20 -
Fetch Join
✔오늘 배운 중요한 🔑 pointFetch Join은 2개 이상의 엔티티를 한번의 SQL 쿼리로 가져오는 것이다.Fetch Join은 대용량 데이터를 처리할 때 유용하다.🎯 오늘 배운 내용 Fetch Join이란?Fetch join은 두 개 이상의 엔티티를 한 번의 SQL 쿼리로 조인하여 필요한 데이터를 모두 한 번에 가져오는 것일반적으로 @OneToMany, @ManyToOne, @OneToOne, @ManyToMany와 같은 관계에서 많이 사용된다. Fetch Join을 사용해야 하는 이유?성능 최적화:N+1 문제 해결: 일반적으로 JPA를 사용하면서 연관된 엔티티를 가져올 때 N+1 문제가 발생할 수 있는데 Fetch join을 사용하면 단일 쿼리로 모든 필요한 데이터를 한 번에 가져올 수 있..
2024.07.19 -
최종 프로젝트 (7일차)
🕑팀 프로젝트 (Sober)💡 프로젝트 기간: 2024-07-12~2024-08-22 프로젝트 목적와인21 같은 와인 정보 사이트를 크롤링 하여 해당 정보를 바탕으로 사용자의 선호 와인에 따라 적절한 와인을 추천해주는 와인 추천 서비스 API 설계를 목적으로 하며 최종적으로 배포 및 사용성 테스트 까지를 목표로 한다. 프로젝트 진행과정 오늘 완료한 기능 진행중인 기능
2024.07.18