Genie의 Java 개발 공부와 일지를 기록하는 아카이브 공간 Develop Study/Java44 (24.07.09)[13주차] @DataJpaTest 슬라이스 테스트에서의 빈 등록 슬라이스 테스트 중 QueryDSL로 구현한 RepositoryCustom과 JpaRepository가 extends 된 3 Layer Architecure 의 Repository 레이어의 테스틀 위해 @DataJpaTest Annotation 을 활용하면서 발생한 이슈를 정리 @DataJpaTest에서의 빈 등록@DataJpaTest@ActiveProfiles("test")public class LikeRespositoryTest { @Autowired private LikeRepository likeRepository; ...이슈테스트 코드에서의 검증 문제가 아닌 디버깅도 시작이 안되는 주입 단에서의 문제가 발생지속적으로 Runtime시에 ApplicationContext자체가.. 2024. 7. 9. (24.07.03)[12주차] QueryDSL사용을 위한 Repository 분리 QueryDSL로 JPA에서 쿼리문을 구현하려고 했지만, 기존에 JpaRepository 를 상속받는 Repository를 사용하고 있었기에 내부에 QueryDSL 쿼리역시 구현을 할 수 없었다. 그렇다고 Service단에서 그 쿼리를 구현하는 것은 계층을 분리하고자 하는 의의와 벗어나게 되는데, 그렇다면 어떻게 QueryDSL을 사용할 수 있을지에 대한 구조 정리QueryDSL을 사용하기 위한 Repository 구성JpaRepository만 상속 받는 형태의 Repository로 Service 계층에서 findBy save delete 등의 쿼리 메서드를 사용할 수 있었지만, QueryDSL을 사용하기 위해서는 이 상속받고 있는 Repository를 사용하는 것이 아닌 위의 그래프처럼 Custom R.. 2024. 7. 3. (24.07.02)[12주차] QueryDSL의 Wildcard 와 Count count를 사용하여 총 갯수를 구하려는 쿼리문을 QueryDSL로 작성을 해야할 필요가 있다.하지만, 어떤 상황에 따라서는 Join 에 따라서 count가 실행되지 않을 수 있다. QueryDSL 의 Wildcard 사용 이슈public ProfileResponseDto getUserProfile(String userName) { QUser qUser = QUser.user; QLike qLike = QLike.like; ... Long aptLikesCount = jpaQueryFactory.select(Wildcard.count) .from(qLike) .leftJoin(qLike.user, qUser).f.. 2024. 7. 2. (24.06.20)[10주차] Optional 객체값 가져오기 Optional 객체 User user = userRepository.findByUsername(username).orElseThrow( () -> new IllegalArgumentException("회원을 찾을 수 없습니다.") );Controller - Service - Repository 형태의 3 Layer Architecture 에서 위 코드와 같은 쿼리 메서드를 레포지토리에 JpaRepository 를 extends 시켜서 사용할 수 있다.하지만, 여러 실습을 통해서 무조건 findBy로 찾지 못했을 때, orElseThrow 만 사용하는 것을 실습을 통해 많이 사용하지만, 예외가 던져진다면, 서버에서 작동을 멈추는 단점이 있기도 했다.이 때 만들어지.. 2024. 6. 20. (24.06.19)[10주차] Mockito 구문 개인 과제를 진행하면서 JUnit 5 과 Mockito를 사용하여 테스트 코드를 진행을 했다.하지만, Mock 객체를 만드는 것은 잘 확인할 수 있었지만,Mock객체를 검증하는데 필요한 구문들을 활용하느데 있어서, 일상 영어 같지만, 특정 규칙이 있으며, 그것을 활용한다면 테스트 코드가 더 다양하게 확장시킬 수 있음을 알 수 있었다. 추가적으로 학습을 하기 위해서 Mockito 구문들 그리고 구문에 사용할 수 있는 ArgumentMatcher에 대해선 찾아보고내 말로 정리를 했다.Mockito 구문Mockito에서 알고 있었던 것@ExtendWith(MockitoExtension.class) ...@MockProductRepository productRepository;...Mockito는 가짜객체를 생.. 2024. 6. 19. (24.06.11)[9주차] HashMap + 사용자 정의 Comparator 사용하기 Custom Comparator에 대해서 전에 다뤘지만, HashMap을 활용하는데 있어서 Generics 의 일치와 사용방법을 더해서 새롭게 정리를 하면서 Collection Framework의 사용을 다시 한번 더 정리하면서 학습!HashMap + 사용자정의 Comparator 사용하기KODA KATA를 진행하면서 주어진 문제를 살짝 변형해서 학습할 수 있도록 HashMap 구조와 사용자 정의 Comparator를 함께 사용하여 코드를 작성하고 연습하려고 했다.HashMap 의 Key-Value에 관하여 Comparator에서 사용될 수 있을지 의문이 들기도 했고, 처음 코드를 작성했을때, Value를 하나씩 꺼내서 비교하고, 그 Value 에 맞는 키 값을 또 찾아서 반환하는 로직을 다시 학습하면서.. 2024. 6. 11. (24.06.10)[9주차] 원시타입 Array -> List 변환 Array 배열과 List를 변환해줘야하는 코드 테스트 시험이 있을 때 매우 유용한 부분이라고 생각되어 CODE KATA의 문제 중에 짠 코드를 사용해서 분석하고 정리를 했다. 원시타입 Array의 List 변환public class Main { public static void main(String[] args) { int[] score = {1, 2, 3, 1, 2, 3, 1}; List scoreList = new ArrayList(Arrays.asList(score)); // 에러...이슈원시 타입의 Array를 asList 메스드를 활용 불가가장 기초적인 것이지만, 빨리 코드를 작성하고, 로직을 구현하고자 할때, 자연스럽게 Integer int 의 자동 박싱 언박.. 2024. 6. 10. 이전 1 2 3 4 5 ··· 7 다음