코딩두의 포트폴리오

서비스 계층 설정 본문

2024 Tourism Data Utilization Contest/Spring Boot

서비스 계층 설정

코딩두 2024. 6. 20. 18:47

디렉토리 구조

demo
├── src
│   ├── main
│   │   ├── java
│   │   │   └── com
│   │   │       └── example
│   │   │           └── demo
│   │   │               ├── controller
│   │   │               │   └── TouristSpotController.java
│   │   │               ├── entity
│   │   │               │   └── TouristSpot.java
│   │   │               ├── repository
│   │   │               │   └── TouristSpotRepository.java
│   │   │               └── service
│   │   │                   ├── TouristSpotService.java
│   │   │                   └── TouristSpotServiceImpl.java
│   └── resources
│       └── application.properties
└── pom.xml

 

 

서비스 계층

비즈니스 로직 캡슐화

컨트롤러, 데이터 액세스 계층(리포지토리) 간 중개 역할

-> TouristSpot 엔티티를 다루는 서비스 계층 구현

 

서비스 인터페이스

비즈니스 로직을 정의하는 메소드 선언

package com.example.demo.service;

import java.util.List;
import com.example.demo.entity.TouristSpot;

public interface TouristSpotService {
    List<TouristSpot> findAll();
    TouristSpot findById(Long id);
    TouristSpot save(TouristSpot touristSpot);
    void deleteById(Long id);
}

 

  • findAll(): 모든 관광지 정보를 조회
  • findById(Long id): 특정 ID의 관광지 정보를 조회
  • save(TouristSpot touristSpot): 새로운 관광지 정보를 저장하거나 기존 정보를 업데이트
  • deleteById(Long id): 특정 ID의 관광지 정보를 삭제

 

 

서비스 구현 

서비스 인터페이스 구현, 실제 비즈니스 로직 수행

리포지토리 계층 호출 -> DB와의 상호작용

package com.example.demo.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import com.example.demo.entity.TouristSpot;
import com.example.demo.repository.TouristSpotRepository;

@Service
public class TouristSpotServiceImpl implements TouristSpotService {

    @Autowired
    private TouristSpotRepository touristSpotRepository;

    @Override
    public List<TouristSpot> findAll() {
        return touristSpotRepository.findAll();
    }

    @Override
    public TouristSpot findById(Long id) {
        return touristSpotRepository.findById(id).orElse(null);
    }

    @Override
    public TouristSpot save(TouristSpot touristSpot) {
        return touristSpotRepository.save(touristSpot);
    }

    @Override
    public void deleteById(Long id) {
        touristSpotRepository.deleteById(id);
    }
}

 

  • TouristSpotServiceImpl 클래스는 TouristSpotService 인터페이스를 구현
  • @Service 어노테이션을 사용하여 스프링이 이 클래스를 서비스 빈으로 인식
  • TouristSpotRepository를 @Autowired로 주입받아 데이터베이스 연산
  • 각 메서드는 리포지토리 계층을 호출하여 실제 데이터베이스 연산

 

'2024 Tourism Data Utilization Contest > Spring Boot' 카테고리의 다른 글

데이터 로더  (0) 2024.06.20
설정 파일  (0) 2024.06.20
컨트롤러  (0) 2024.06.20
스프링부트 프로젝트 생성  (0) 2024.06.20
스프링부트 초기 환경설정  (0) 2024.06.20