개발 기록
211124 TIL ( responesDto ) 본문
오늘 한 것 !
-챌린지 조회
-인증 생성, 조회, 삭제
controller 에는 엔티티 클래스가 바로 리턴 되면 안된다. Dto를 사용해야함.
심지어 DTO안에서도 DTO로 한번 감싸고 넣어줘야 한다.!?! 머리아퍼
한번 dto를 안 썼을때 생기는 문제를 직접 겪어보고 싶다. 왜이렇게 하는지 이론 적으로는 이해했는데 와닿지는 않는다.
내가 멍청하게 생각 못 했던 것
List<Certification> certifications = challenge.getCertifications();
for (Certification certification : certifications) {
CertificationResponseDto responseDto = new CertificationResponseDto(certification);
this.certifications.add(responseDto);
엔티티에서 가져온 리스트 요소들을 dto에 담아서 보내주기. 어떻게 담지를 생각을 못 했다.
너무 간단한 거였는데 ㅠㅠ 기초가 모자란 것을 너무나도 많이 느낀다. 강의를 듣긴들어야돼..
-Long 을 long 이라고 썼더니 실행이 안됨 ( 당연한 건감 )
-서비스단에서 레포에서 가져온 엔티티 데이터를 dto로 바꿔주기 위해서 map을 사용했다.
블로그에서 보고 복붙한 거지만 좀 찾아봤다.
->
스트림 맵(함수 매퍼) 은 주어진 함수를 이 스트림의 요소에 적용한 결과로 구성된 스트림을 반환합니다.
맵은 스트림 내 요소들을 하나씩 특정 값으로 변환해준다.
스트림에 들어가 있는 값이 input되어서 특정 로직을 거친 후 output이 되어 리턴되는 새로운 스트림에 담기게 되고 이작업을 맵핑이라고 한다.
스트림은 뭐징
(스트림은 데이터의 흐름 이라고 하는데.. 데이터가 왔다갔다 할 수 있게 중간에서 처리해주는 그런 거 같다. )
예시
List<String> answer = list.stream().map(String::toUpperCase).
//리스트 요소들을 대문자로 바꿔줌
list.stream().map(str -> str.length()).forEach(System.out::println);
//문자열 대신 문자열 길이를 프린트함
내가 사용한 코드
list.stream().map(listDto::new).collect(Collectors.toList());
// 엔티티 리스트가 listDto 생성자에 input되어서 DTO가 리턴되고 그걸 리스트로 반환해주는 것 같다
-날짜 변환하기
LocalDateTime 을 String 으로 바꾸기
StartDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
출처
https://www.geeksforgeeks.org/stream-map-java-examples/
스프링 어렵다 큰 흐름만 이해하면 뚝딱거리면서 해보기라도 할텐데 지금은 걍 참고자료 복붙이다. ㅠㅠ 계속 이러면 안 되니까.. 공부해야되는데 잠 줄이기가 쉽지 않다.
'TIL' 카테고리의 다른 글
211128 WIL (3차 프로젝트 1주차) (2) | 2021.11.28 |
---|---|
211126 TIL ( object list 중복제거 ) (0) | 2021.11.26 |
211124 TIL ( 스프링 S3 파일 업로드) (0) | 2021.11.25 |
211122 TIL (@Transactional,예약어) (0) | 2021.11.22 |
211121 WIL (0) | 2021.11.21 |