DTO
- DTO는 데이터를 전달하기 위한 객체이다.
- DTO에서는 Entity를 포함하지 않는 것이 좋다.
기존 PlayerDTO
public class PlayerDTO {
private long id;
private String name;
private long number;
private Team team;
}
- 다음과 같이 Team Entity를 포함하고 있다.
새로운 PlayerDTO
public class PlayerDTO {
private long id;
private String name;
private long number;
private long teamId;
}
- 다음과 같이 Team 대신 teamId를 반환한다.
Player Controller
Get
@GetMapping("{id}")
public PlayerDTO getPlayerById(Long id) {
return playerService.getPlayerById(id);
}
Put
@PutMapping("{id}")
public PlayerDTO updatePlayer(Long id, PlayerDTO playerDTO) {
TeamDTO teamDTO = teamService.getTeamById(playerDTO.getTeamId());
if(teamDTO == null) {
throw new TeamNotFoundException("Team not found with id: " + playerDTO.getTeamId());
}
Team team = new Team(teamDTO.getId(), teamDTO.getName(), teamDTO.getCity(), teamDTO.getChampionships());
playerDTO.setTeamId(team.getId());
playerService.updatePlayer(id, playerDTO);
PlayerDTO updatedPlayer = playerService.getPlayerById(id);
return updatedPlayer;
}
Delete
@DeleteMapping("{id}")
public void deletePlayer(Long id) {
playerService.deletePlayer(id);
}
