Repository를 통해 전달받는 값 Vo를 담은 List<Vo>를,
List<Entity>로 변경하고 싶을 때 사용.
List<Vo> voList = new ArrayList<>();
List<Entity> entityList;
entityList = voList.stream().map(Vo::toEntity).collect(Collectors.toList());
- stream() : 기존 for, foreach를 통해 하나씩 요소를 꺼내 사용하던 방식을 람다로 변경한 것.
- Vo::toEntity : Vo 객체의 toEntity 메서드를 사용하겠다는 의미.
- map(Vo::toEntity) : Vo::toEntity로부터 반환받은 값을 다시 stream으로 반환.
- collect(Collectors.toList()) : 스트림을 List로 변환시켜 준다.
*** toMap, toCollection(람다식) 등 다른 방식으로도 변환가능.
단, 이를 사용하기 위해서는 Vo, Entity도 수정해줘야 한다.
1) Vo.java
toEntity()에 해당하는 메서드를 만들어, Entity 생성자를 호출해 리턴하기.
public Entity toEntity() {
return new Entity(값1, 값2, ...);
}
2) Entity.java
@AllArgsConstructor 또는 직접 생성자를 만들어줄 것.
자바는 생성자가 없으면 기본 생성자를 자동 생성해 주지만, 생성자를 위와 같이 만드는 경우 더 이상 기본 생성자를 제공하지 않음.
때문에 만약 값이 없이 생성되는 NoArgsConstructor도 필요한 경우에는 같이 추가해줘야 한다. (또는 직접 추가)
Builder pattern과 @Jacksonized (0) | 2023.05.07 |
---|---|
[Spring Boot] 테스트 클래스와 @Transactional 어노테이션 (1) | 2023.03.05 |
[Spring boot] 테스트 케이스 작성하기 (0) | 2023.02.22 |
[Spring Boot] Entity와 Repository (0) | 2023.02.20 |
[Spring Boot] 웹개발 - 정적 컨텐츠, MVC + 템플릿 엔진, API (0) | 2023.02.19 |