상세 컨텐츠

본문 제목

ch3.2~ 모델, repository, 서비스코드 구현

패캠스프링/part2.5_ spring가이드

by hippo0207 2022. 7. 21. 19:01

본문

03. 모델구현

  1. todo entity, todo request, todo response 생성하기
  2. Todoentity.java
[TodoEntity.java]
package org.example.model;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.persistence.*;

@Data
@Entity
@NoArgsConstructor
@AllArgsConstructor
public class TodoEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(nullable = false)
    private String title;

    @Column(name = "todoOrder", nullable = false)
    private Long order;

    @Column(nullable = false)
    private Boolean completed;
}

 

  • TodoRequest.java
[TodoRequest.java]
package org.example.model;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class TodoRequest {

    private String title;
    private Long order;
    private Boolean completed;
    
}
  • todoResponse.java
package org.example.model;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class TodoResponse {

    private Long id;
    private String title;
    private Long order;
    private Boolean completed;
    private String url;
    
     
    public TodoResponse(TodoEntity todoEntity){
        this.id = todoEntity.getId();
        this.title = todoEntity.getTitle();
        this.order = todoEntity.getOrder();
        this.completed = todoEntity.getCompleted();
        
        this.url = "http://localhost:8080/" + this.id;
    }
}

04. repository 구현

: 데이터를 주고받는 방식인 인터페이스임 (실제 저장소는 아님)

05. 서비스코드 구현

  • TodoRepository
package org.example.repository;

import org.example.model.TodoEntity;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface TodoRepository extends JpaRepository<TodoEntity, Long> {
}
  • TodoService.java  >> 필요한 서비스 구현 
todo list 필요기능
1. 목록에 아이템 추가
2. 목록 중 특정 아이템 조회
3. 전체 목록 조회
4. 목록 중 특정 아이템 수정
5. 목록 중 특정 아이템 삭제
6. 전체 목록 삭제
package org.example.service;

import lombok.AllArgsConstructor;
import org.example.repository.model.TodoEntity;
import org.example.repository.model.TodoRequest;
import org.example.repository.model.TodoResponse;
import org.example.repository.TodoRepository;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import org.springframework.web.server.ResponseStatusException;

import java.util.List;

@Service
@AllArgsConstructor
public class TodoService {

    private final TodoRepository todoRepository;

    //    1. 목록에 아이템 추가
    public TodoEntity add(TodoRequest request) {
        TodoEntity todoEntity = new TodoEntity();
        todoEntity.setTitle(request.getTitle());
        todoEntity.setOrder(request.getOrder());
        todoEntity.setCompleted(request.getCompleted());

        return this.todoRepository.save(todoEntity); // <S extends T> S save(S entity);  >>> TodoEntity값 return함
    }
    //    2. 목록 중 특정 아이템 조회
    public TodoEntity searchById(Long id) {
        return this.todoRepository.findById(id)
                .orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_FOUND));  //>>>>@@@@@@
    }
    //    3. 전체 목록 조회
    public List<TodoEntity> searchAll() {
        return this.todoRepository.findAll();
    }
    //    4. 목록 중 특정 아이템 수정
    public TodoEntity updateById(Long id, TodoRequest request) {
        TodoEntity todoEntity = this.searchById(id);
        if (request.getTitle() != null){
            todoEntity.setTitle(request.getTitle());
        }
        if(request.getOrder() != null){
            todoEntity.setOrder(request.getOrder());
        }
        if(request.getCompleted() != null){
            todoEntity.setCompleted(request.getCompleted());
        }
        return this.todoRepository.save(todoEntity);
    }
    //    5. 목록 중 특정 아이템 삭제
    public void deleteById(Long id){
        this.todoRepository.deleteById(id);
    }
    //    6. 전체 목록 삭제
    public void deleteAll(){
        this.todoRepository.deleteAll();
    }

}

관련글 더보기

댓글 영역