전체 글
-
[Spring] Test에서 public이 아닌 필드 Reflection 으로 값 넣어주는 법Server/Spring 2021. 11. 26. 21:21
Test에서 public이 아닌 필드를 Reflection 으로 값 넣어주는 법 이번 글에서는 테스트 코드를 작성하면서 public이 아닌 필드에 값을 넣어주어야 하는 상황에서 Reflection을 사용해서 값을 넣어주는 법에 대해서 정리해보겠습니다. 이번 글은 Reflection이 무엇인지 설명하는 글은 아니다 보니 Reflection을 알고 싶다면 Reflection 알아보기 를 참고하시면 좋을 거 같습니다. 먼저 제가 진행하고 있는 프로젝트에서 겪은 상황에 대해서 공유해보겠습니다. 현재 Repository는 Mockito를 사용해서 Mocking 하고 Service Layer의 메소드만 Unit Test를 해보려 하고 있습니다. 내부 로직이 없고 단순히 Entity -> DTO로 변환하는 메소드 입..
-
[JPA] Fetch Join 할 때 MultipleBagFetchException 해결하는 법Server/JPA 2021. 11. 24. 14:53
Spring Data JPA에서 MultiBagFetchException 해결하기 이번 글에서는 JPA를 사용한지 얼마 안된 초보자 입장에서 겪은 어려움을 공유하고 어떻게 해결해나갔는지 공유하며 생각을 정리해보려 합니다. 위의 화면에 대한 API를 만들어야 하는 상황입니다. 위의 뷰에서는 내가 팔로우 하고 있는 사람이 작성한 게시글이 나타나야 합니다. View를 보면서 DB Table을 간단하게 같이 보겠습니다. 하나의 게시글 : 여러 장의 사진 (1 : N) 하나의 게시글 : 여러 개의 가게 평가 해시 태그 (1 : N) 하나의 게시글 : 같이 가게를 간 사람들의 닉네임 (1 : N) 위의 조건에 해당하는 데이터를 다 가져와야 하나의 Post(게시글)을 보여줄 수 있습니다. 즉, JOIN이 꽤 많이 들..
-
[Java] Thread synchronized, Lock 개념 정리하기카테고리 없음 2021. 11. 23. 20:52
Java Thread Lock 개념 정리 Java에서 synchronized 키워드를 사용하는 방법은 크게 3가지로 나눌 수 있습니다. 어쩌면 단순한 내용이지만 하나씩 Lock의 개념을 이해하면서 정리해보겠습니다. synchronized 메소드 public class MusicExam { public static void main(String[] args) { MusicBox box = new MusicBox(); MusicPlayer musicPlayer1 = new MusicPlayer(1, box); MusicPlayer musicPlayer2 = new MusicPlayer(2, box); musicPlayer1.start(); musicPlayer2.start(); } } public class..
-
[Spring] @Builder를 사용할 때 고려해야 할 생성자 문제 알아보기Server/Spring Boot 2021. 11. 21. 00:48
@Builder, @AllArgsConstructor 알아보기 이번 글에서는 @Builder, @AllArgsConstructor, @NoArgsConstructor 애노테이션을 사용할 때 알아야 할 점에 대해서 정리해보겠습니다. 위와 같이 @Builder, @NoArgsConstructor를 사용했을 때 Lombok에서 만들어주는 메소드를 알아보겠습니다. 만들어주는 메소드를 보면 기본 생성자, 빌더 관련 메소드들을 만들어주는 것을 볼 수 있습니다. Builder가 어떤 것인지 안다면 전체 생성자가 필요하다는 것을 알 수 있습니다. (Builder가 궁금하다면 여기 에서 확인하실 수 있습니다.) Builder란 생성자의 매개변수가 많을 때 좀 더 편리하게 객체를 만들 수 있게 도와주는 것이고, Build..