https://github.com/2026-source-code/java-skills
https://github.com/2026-source-code/why-dto.git

package ex01;
import lombok.Data;
@Data // getter, setter, toString
public class User {
private int id;
private String username;
private String email;
}
package ex01;
import lombok.Data;
@Data
class UserDTO {
private int id;
private String username;
private String email;
}
public class CopyEx01 {
public static void main(String[] args) {
// 1. setter
User user = new User();
user.setId(3);
user.setUsername("ssar");
user.setEmail("[email protected]");
UserDTO dto = new UserDTO();
dto.setId(user.getId());
dto.setUsername(user.getUsername());
dto.setEmail(user.getEmail());
System.out.println(dto);
}
}
package ex01;
import lombok.Data;
@Data
class UserDTO2 {
private int id;
private String username;
private String email;
public UserDTO2(int id, String username, String email) {
this.id = id;
this.username = username;
this.email = email;
}
}
public class CopyEx02 {
public static void main(String[] args) {
// 1. setter
User user = new User();
user.setId(1);
user.setUsername("ssar");
user.setEmail("[email protected]");
UserDTO2 dto2 = new UserDTO2(user.getId(), user.getUsername(), user.getEmail());
System.out.println(dto2);
}
}
package ex01;
import lombok.Data;
@Data
class UserDTO3 {
private int id;
private String username;
private String email;
public UserDTO3(User user) {
this.id = user.getId();
this.username = user.getUsername();
this.email = user.getEmail();
}
}
public class CopyEx03 {
public static void main(String[] args) {
// 1. setter
User user = new User();
user.setId(1);
user.setUsername("ssar");
user.setEmail("[email protected]");
UserDTO3 dto3 = new UserDTO3(user);
System.out.println(dto3);
}
}
package ex01;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
@Data
class Board{ // 1
private int id;
private String title;
private String content;
private List<Reply> replies = new ArrayList<>();
}
@Data
class Reply{ // N
private int id;
private String comment;
}
@Data
class DetailDTO {
private int id;
private String title;
private String content;
private List<String> comments = new ArrayList<>();
public DetailDTO(Board board) {
this.id = board.getId();
this.title = board.getTitle();
this.content = board.getContent();
this.comments = board.getReplies().stream() // r1, r2, r3
.map(r-> r.getComment())
.limit(2)
.toList();
}
}
public class CopyEx04 {
public static void main(String[] args) {
// 1. setter
Reply r1 = new Reply();
r1.setId(1);
r1.setComment("댓글1");
Reply r2 = new Reply();
r2.setId(2);
r2.setComment("댓글2");
Reply r3 = new Reply();
r3.setId(3);
r3.setComment("댓글3");
Board board = new Board();
board.setId(1);
board.setTitle("제목1");
board.setContent("내용1");
board.setReplies(List.of(r1, r2, r3));
// 2. 옮기기 (객체복사)
DetailDTO dto = new DetailDTO(board);
System.out.println(dto);
}
}