DAO, DTO, Entity 의 차이에 대해 알아보자.
예를 들어 User 엔티티 클래스와 UserDTO 클래스가 있다고 하자. UserService 에서는 User 엔티티 클래스의 정보 중 id 필드값 등등을 제외한 일부 정보만 필요하다고 하자. 이 경우엔 DB에서 받아온 User 인스턴스를 그대로 사용하는 것보단 개발자가 원하는 자료들만을 모아놓은 UserDTO 와 같은 클래스를 사용하는게 효율적이다.
User
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String username;
private String email;
// Getter, Setter, 생성자 등...
// 비즈니스 로직 메서드들...
}
UserDTO
public class UserDTO {
private String username;
private String email;
// Getter, Setter, 생성자 등...
// 필요한 경우 변환 메서드 등...
}
UserService
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
public UserDTO getUserById(Long userId) {
User user = userRepository.findById(userId).orElse(null);
if (user != null) {
UserDTO userDTO = new UserDTO();
userDTO.setUsername(user.getUsername());
userDTO.setEmail(user.getEmail());
return userDTO;
}
return null;
}
// 다른 비즈니스 로직 및 데이터 액세스 메서드들...
}