본문 바로가기
스프링 (Spring)/DTO, Lombok, JPA, H2

Spring의 Service / JPA Update, Delete

by 후닝훈 2021. 7. 14.
반응형

스프링의 3 영역

  1. Controller : 가장 바깥 부분, 요청/응답을 처리함.
  2. Service : 중간 부분, 실제 중요한 작동이 많이 일어나는 부분
  3. Repo : 가장 안쪽 부분, DB와 맞닿아 있음.

 

 

Service 추가하기

 

Course.java 수정

public void update(Course course) {
    this.title = course.title;
    this.tutor = course.tutor;
}

 

Service Package, CourseService 생성

@Service // 스프링에게 이 클래스는 서비스임을 명시
public class CourseService {

    // final: 서비스에게 꼭 필요한 녀석임을 명시
    private final CourseRepository courseRepository;

    // 생성자를 통해, Service 클래스를 만들 때 꼭 Repository를 넣어주도록
    // 스프링에게 알려줌
    public CourseService(CourseRepository courseRepository) {
        this.courseRepository = courseRepository;
    }

    @Transactional // SQL 쿼리가 일어나야 함을 스프링에게 알려줌
    public Long update(Long id, Course course) {
        Course course1 = courseRepository.findById(id).orElseThrow(
                () -> new IllegalArgumentException("해당 아이디가 존재하지 않습니다.")
        );
        course1.update(course);
        return course1.getId();
    }
}

 

Application 동작해보기

 

Update

@Bean
public CommandLineRunner demo(CourseRepository courseRepository, CourseService courseService) {
    return (args) -> {
        courseRepository.save(new Course("프론트엔드의 꽃, 리액트", "임민영"));

        System.out.println("데이터 인쇄");
        List<Course> courseList = courseRepository.findAll();
        for (int i=0; i<courseList.size(); i++) {
            Course course = courseList.get(i);
            System.out.println(course.getId());
            System.out.println(course.getTitle());
            System.out.println(course.getTutor());
        }

        Course new_course = new Course("웹개발의 봄, Spring", "임민영");
        courseService.update(1L, new_course);
        courseList = courseRepository.findAll();
        for (int i=0; i<courseList.size(); i++) {
            Course course = courseList.get(i);
            System.out.println(course.getId());
            System.out.println(course.getTitle());
            System.out.println(course.getTutor());
        }
    };
}

 

Delete

courseRepository.deleteAll();

 

반응형

'스프링 (Spring) > DTO, Lombok, JPA, H2' 카테고리의 다른 글

DTO, Data Transfer Object  (0) 2021.07.15
Lombok  (0) 2021.07.15
JPA Repository - Save, findAll, findById  (0) 2021.07.14
CRUD  (0) 2021.07.13
DB 에 생성일자와 수정일자 필드 만들기  (0) 2021.07.13

댓글