Service
Service란?
- 데이터 처리를 위해 작성하는 클래스
- Repository를 이용해서 비즈니스 로직을 담당하는 클래스
- 코드를 모듈화할 수 있다.
- DTO 객체로 변환하는 작업을 수행한다.
- Entity를 직접 사용하는 것은 위험할 수 있음
Service 클래스 만들기
- ssb/src/main/java/com.chan.ssb/team에 TeamService.java를 추가하자
- Team.java
package com.chan.ssb.team;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class TeamService {
private final TeamRepository teamRepository;
public TeamService(TeamRepository teamRepository) {
this.teamRepository = teamRepository;
}
}
- @Service: 다음을 이용해서 클래스를 서비스로 등록할 수 있다.
- private final TeamRepository teamRepository: 다음을 이용해서 CRUD등의 기능을 수행한다.
GET
public TeamDTO getTeamById(long id) {
return TeamDTO.fromEntity(teamRepository.findById(id).orElse(null));
}
public List<TeamDTO> getAllTeams() {
List<Team> teams = teamRepository.findAll();
List<TeamDTO> returnTeams = teams.stream().map(TeamDTO::fromEntity).toList();
return returnTeams;
}
POST
public List<TeamDTO> createTeams(List<TeamDTO> teamDTOList) {
List<Team> newTeams = teamDTOList.stream().map(team -> new Team(team.getId(), team.getName(), team.getCity(), team.getChampionships())).toList();
return teamRepository.saveAll(newTeams).stream().map(TeamDTO::fromEntity).toList();
}
PUT
public TeamDTO updateTeam(long id, TeamDTO team) {
Team updateTeam = new Team(id, team.getName(), team.getCity(), team.getChampionships());
return TeamDTO.fromEntity(teamRepository.save(updateTeam));
}
DELETE
public void deleteTeam(long id) {
teamRepository.deleteById(id);
}
Controller 수정하기
package com.chan.ssb.team;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RequestMapping("/team")
@RestController
public class TeamController {
private final TeamService teamService;
public TeamController(TeamService teamService) {
this.teamService = teamService;
}
@GetMapping("")
public List<TeamDTO> getAllTeams() {
return teamService.getAllTeams();
}
@GetMapping("/{id}")
public TeamDTO getTeam(@PathVariable long id) {
return teamService.getTeamById(id);
}
@PostMapping("")
public List<TeamDTO> createTeams(@RequestBody List<TeamDTO> teamDTOList) {
return teamService.createTeams(teamDTOList);
}
@PutMapping("/{id}")
public TeamDTO updateTeam(@PathVariable long id, TeamDTO team) {
return teamService.updateTeam(id, team);
}
@DeleteMapping("/{id}")
public void deleteTeam(@PathVariable long id) {
teamService.deleteTeam(id);
}
}