본문 바로가기

Today I Learned109

(24.06.21)[10주차] CrudRepository & Delete 쿼리 메서드 Controller-Service-Repository 의 3 Layer Structure에 사용되는 Repository는 interface로, JpaRepository 를 extends 받는다.따라서 Service단에서는 주입받은 Repository에 쿼리메서드를 상요할 수 있는데, 지금까지는 findBy-- 형태의 일종의 Select-where 쿼리와 유사한 것만 사용하고 그 밖에는 Optional로 만들어서 쓸 수 밖에 없었는데, 팀과제를 하면서 내가 스스로 만들어낸 쿼리메서드가 아니라 이미 CRUD 에 특화된 CrudRepository를 활용할 수 있도록 코드를 짠 팀원을 보면서 코드 리뷰할 때 궁금증이 생겼고 이에 대해 조금 알아보고 정리하려고 한다. CrudRepositoryJpaReposito.. 2024. 6. 21.
(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.18)[10주차] Reflection & ReflectionTestUtils을 통한 필드 다루기 @Entity@Getter@Table(name = "users")public class User {... @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(unique = true, nullable = false, name = "username") private String username; @Column(nullable = false) private String password; @Column(nullable = false) private String name; @Column(unique = true, nullable = false) private S.. 2024. 6. 18.