일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 버튼 이벤트
- 자바스크립트
- 에러
- 안드로이드 스튜디오
- 시작
- 코드업
- 출력
- 리팩터링
- 점심
- 설치
- JavaScript
- 안드로이드
- 맛집
- 설정
- 반복문
- 파이썬
- 방법
- JDK 8
- 2차원 리스트
- spring boot
- 27G2
- java
- python
- 안스
- 예제
- CodeUP
- 자바
- r
- 변경
- Android Studio
Archives
- Today
- Total
기루 기룩 기록
[JPA] Page<Entity> -> List<DTO> 변환 코드 본문
반응형
DTO 인터페이스
public interface DTO<T extends Domain, Y extends DTO> {
Y getInstanceByEntity(T t);
T toEntity();
}
DTO 구현체
@Getter
@Setter
public class NoticeDTO implements DTO<Notice, NoticeDTO> {
private Long pkey;
private String title;
private String content;
private Long createdDt = new Date().toInstant().getEpochSecond(); // Instant
public NoticeDTO() {
}
public NoticeDTO(Notice notice) {
this.pkey = notice.getPkey();
this.title = notice.getTitle();
this.content = notice.getContent();
this.createdDt = notice.getCreatedDt().getEpochSecond();
}
@Override
public NoticeDTO getInstanceByEntity(Notice notice) {
NoticeDTO noticeDTO = new NoticeDTO(notice);
return noticeDTO;
}
@Override
public Notice toEntity() {
return Notice.builder()
.pkey(this.pkey)
.title(this.title)
.content(this.content)
.createdDt(Instant.ofEpochSecond(this.createdDt))
.build();
}
}
Entity 인터페이스
public interface Domain {
}
Entity 구현체
@Entity
@Table(name = "Notice")
@Getter @ToString
public class Notice implements Domain {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long pkey;
private String title;
private String content;
private Instant createdDt;
public Notice() {
}
@Builder
public Notice(Long pkey, String title, String content,
Instant createdDt) {
this.pkey = pkey;
this.title = title;
this.content = content;
this.createdDt = createdDt;
}
}
Page<Entity> -> List<DTO> 변환 util
public class DataSourceUtils {
private DataSourceUtils() {
}
public static <Y extends Domain, T extends DTO<Y, T>> List<T> convertEntityToDTOList(Page<Y> page, T t) {
List<Y> content = page.getContent();
return content.stream().map(x -> t.getInstanceByEntity(x)).collect(Collectors.toList());
}
}
Page<Notice> page = noticeRepository.findAllByCode(code, pageable);
List<NoticeDTO> list = DataSurceUtils.convertEntityToDTOList(page, new NoticeDTO());
반응형