[Start Spring Boot] Service 사용하기

·2024년 3월 15일
0

Start Spring Boot!

목록 보기
16/53
post-thumbnail

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 수정하기

  • TeamController.java
package com.chan.ssb.team;

import org.springframework.web.bind.annotation.*;

import java.util.List;

@RequestMapping("/team")
@RestController
public class TeamController {

    // Team: id, name, city, championships

    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);
    }

}
profile
백엔드 개발자가 꿈인 컴공과

0개의 댓글

관련 채용 정보