분류 전체보기
-
Stream에서 null 값을 다뤄야 할 때JAVA/Java 2022. 3. 4. 23:06
stream을 이용하고자 할 때 대상이 null값인 경우도 존재한다면 다음과 같이 구현하여 stream을 사용할 수 있다. Optional.ofNullable(대상).orElseGet(Collections::emptyList).filter(...) ( 그런데 객체는 우선 controller에서 받을 때 값 체크를 해주어야 한다...!) ( 참고한 사이트 ) https://stackoverflow.com/questions/17081063/how-should-we-manage-jdk8-stream-for-null-values How should we manage jdk8 stream for null values I know the subject may be a bit in advance as the JDK8..
-
Service 계층에서 다른 Service 혹은 RepositorySpring 2022. 3. 4. 23:01
리팩토링을 진행하던 중 Service에서 Repsitory를 직접적으로 의존하여 데이터를 찾다보니 연관관계의 데이터를 findBy 객체 찾기가 반복되게 되었다. 한 곳에 findBy를 구현하고 이 함수를 다른 Service가 의존해야 한다는 피드백을 받게 되었다. 기존의 코드 @Service public class FollowService { private FollowRepository followRepository; private UserRepository userRepository; // 직접 의존 //... //연관관계에 존재할 때마다 반복되던 코드 private User findByUserId(Integer id) { return userRepository.findById(id) .orElseTh..
-
Enum의 String 포함 여부를 확인하는 방법JAVA/Java 2022. 3. 4. 22:44
프로젝트 진행중에 category(enum 객체)의 이름이 넘어와 이것이 올바른 category인지 (enum의 이름에 속하는지) 확인이 필요한 상황이 발생했다. String과 일치하는 이름을 가진 Enum 타입이 존재 하는지를 확인하는 데에는 세가지 방법이 존재한다. ① EnumUtils (Apache Commons Lang3 library) https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 첫번째 방법은 라이브러리를 사용하여 구현하는 방법이다. 위 사이트를 통해서 프로젝트 타입에 맞는 버전을 dependency에 추가해준다. // boolean타입으로 값 반환 EnumUtils.isValidEnum(Category.class, "..
-
ExistsBy쿼리를 직접 작성하기Spring 2022. 3. 4. 22:33
프로젝트 리팩토링을 진행하면서 연관관계의 데이터를 이용하여 데이터의 존재여부를 확인하는 경우가 필요하였다. JPA를 이용하면 "existsBy대상"을 통해서 작성하면 알아서 쿼리를 날려주지만, 나의 경우 처음에는 잘 작동하다가 갑자기 뒷부분의 toUserId 부분을 읽지 못하는 상황이 발생했다. (해당부분의 원인이 id를 Id로 작성하거나 대소문자의 구분이 잘 이루어지지 않아서(카멜표기법을 사용해야 함)라고 하여서 확인했으나 명확한 원인을 아직 발견하지 못했다. 😭) 우선 해결을 위하여 쿼리를 직접 구현해주어야 했다. existsBy 쿼리 작성 @Query(value = "SELECT CASE WHEN count(a) > 0 THEN true ELSE false END FROM Apple a WHERE ..
-
Validation failed for query for method public abstract 오류 발생시 (JPA)Spring 2022. 3. 4. 22:26
existsBy를 이용하여 연관관계의 데이터 아이디로 데이터 존재여부를 아는 쿼리를 작성하려고 할때 알맞은 쿼리임에도 쿼리 실패 오류가 발생했다. 기존의 코드 @Query(value = "SELECT CASE WHEN count(f) > 0 THEN true ELSE false END FROM Follow f LEFT JOIN FETCH f.fromUser a LEFT JOIN FETCH f.toUser b WHERE a.id=:fromUserId AND b.id=:toUserId") boolean existsByFromUserIdAndToUserId(Integer fromUserId, Integer toUserId); 기존코드를 보면 네이티브 쿼리로 작성되어 있으므로 수정한 코드 @Query(value..
-
월간 멘토링 - 2개월차학습로그 2022. 2. 28. 23:15
진행기간 2022년 01월 31일 ~ 2022년 02월 27일 학습로그 📝 멘토링 6주차 ( 01월 31일 ~ 02월 06일 ) 인수테스트 미션 2단계 , 3단계 정확한 값을 요할때는( ex) 금액, 값 ) BigDecimal 사용하기 public class Product { private BigDecimal price; } 인수테스트 https://dodop-blog.tistory.com/289 인수테스트 (Acceptance Test) ① 환경 구축 및 작성 지난 주, 미션 진행으로 인수테스트 코드를 작성하는 방법을 배웠다. 인수테스트에 대해서 알아보고 미션 수행 후 작성한 코드를 통해서 작성 방법을 정리한다. 인수테스트란 시스템이 예상대 dodop-blog.tistory.com 📝 멘토링 7주차 (..
-
월간 멘토링 - 1개월차학습로그 2022. 2. 28. 23:07
진행기간 2021년 12월 13일 ~ 2022년 1월 30일 학습로그 ( + 피드백 정리 ) 📝 12월 13일 ~ 12월 25일 개인 프로젝트 리팩토링 진행 자바 코드 컨벤션 (구글 자바 스타일 가이드) : 자바로 코드를 작성할 때 지켜야 할 기본 규칙 https://dodop-blog.tistory.com/262 Java Code Convention ( + Google Java Style Guide) 자바로 코드를 작성할 때에는 규칙을 유지하여 코드를 작성해야 한다. Java Code Convention의 필요성 자바 코드 컨벤션(자바 코드 규칙)는 다른 개발자가 나의 코드를 보아도 한번에 이해하여 가독성 dodop-blog.tistory.com 객체지향 생활 체조 : 객체지향적인 코드를 작성하기 위..
-
프로젝트 공방 멘토링 (Feat. NextStep)학습로그 2022. 2. 28. 22:48
비전공자이지만 프로그래밍 독학을 선택하고 구글링 참고하여 전전긍긍하며 홀로 겨우겨우 작동하는 프로젝트로 만들어도 보았다. 그런데 1년동안 혼자 쿵짝쿵짝 만들다 보니 어떻게 만들기는 만들었는데 과연 내가 어느정도의 수준에 있는 건지, 잘 공부하고 있는 게 맞는지, 이거 가지고 취업은 할 수 있는지 등 객관적인 평가가 필요한 시점이 되었다. (메타인지 능력이 하락장) 그러다 허우적대는 나를 보던 동생이 지인에게 인프런 멘토링 시스템이 존재한다는 것을 듣고 알려주어 신청하게 되었고 이를 통해서 정말 정말 운좋게도 정말 좋은 멘토분을 만나게 되어 멘토링을 꾸준히 받게 되었다. 나같은 비전공자 나부랭이한테는 정말 천운같은 기회였다. 이 글은 이렇게 만나게 된 멘토링 프로그램의 전반적인 진행사항을 기록하기 위해 쓰..