전체 글(150)
-
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 -
@AfterEach 그리고 @DirtiesContext (테스트 코드)
❎ 문제발생프로젝트 진행중 테스트 과정에서 개별 테스트는 통과하지만 통합테스트에서는 해당 테스트가 실패하는 현상이 발생하였다. 🆘 해결 과정 테스트 코드에 있는 id부분이 db가 초기화 될때마자 id는 초기화 되지않고 증가한 상태로 db가 만들어지기 때문에 해당 테스트 코드에서 test가 실패를 한 상황이다.통합테스트에서 테스트가 성공한 이유는 테스트 코드에서는 기본적으로 같은 애플리케이션 컨텍스트를 재활용하는 것이 일반적이기 때문이다.하지만 테스트가 실행될때마다 실제 db에 저장이 되면 안되기 때문에 @Transactional을 이용해서 해결을 할려고 했지만 해결이 되지 않아 @AfterEach를 사용해 각 테스트가 실행이 될때마다 db를 삭제할려고 시도하였지만, id가 1부터 시작하는것이 아니여서..
2024.07.17