전체 글(141)
-
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 -
Cannot convert existing claim value of type 'class java.lang.Integer' to desired type 'class java.lang.String'. 오류
❎ 문제발생프로젝트 진행중 비즈니스 로직을 검증하는 과정에서 해당 오류가 발생하였다. 🆘 해결 과정 디버그 결과 jwt에서 캐스팅 오류가 발생한것으로 보여진다. ✔ 해결 토큰을 생성할때 claim안에 id 정보를 저장하는게 아닌 subject로 넣어서 캐스팅 문제를 해결하였다. return Jwts.builder().subject(memberId.toString()).claims(claims).issuer(issuer) .expiration(Date(System.currentTimeMillis() + 3600 * 1000)).signWith(key).compact()
2024.07.16 -
check & require로 예외처리를 간단하게
✔오늘 배운 중요한 🔑 pointrequire 함수: 입력 값 검증에 적합하며, 조건이 만족되지 않을 경우 IllegalArgumentException을 던진다check 함수: 코드의 상태를 검증하는 데 적합하며, 조건이 만족되지 않을 경우 IllegalStateException을 던진다.🎯 오늘 배운 내용 check함수@kotlin.internal.InlineOnlypublic inline fun check(value: Boolean): Unit { contract { returns() implies value } check(value) { "Check failed." }}/** * Throws an [IllegalStateException] with the result..
2024.07.15 -
Proxy
✔오늘 배운 중요한 🔑 point프록시(Proxy)는 소프트웨어 디자인 패턴 중 하나로, 다른 객체에 대한 접근을 제어하거나 기능을 확장하기 위해 그 객체의 대리인 역할을 하는 객체이다.프록시가 대리인 역할을 하는 이유는 원래 객체에 대한 접근을 제어하거나 기능을 확장하는 데 있다.프록시는 원래 객체의 대리인으로 호출을 가로채서 부가 작업을 수행한다.🎯 오늘 배운 내용 프록시(Proxy)는 소프트웨어 디자인 패턴 중 하나로, 다른 객체에 대한 접근을 제어하거나 기능을 확장하기 위해 그 객체의 대리인 역할을 하는 객체이며 Spring Boot에서 프록시는 AOP, @Transactional 등에 사용이 된다. @Transactional 어노테이션은 Spring 프레임 워크에서 트랜잭션 관리에 사용이 된..
2024.07.14