본문 바로가기
Spring/개념지식 및 에러사항

[Spring] JPA CRUD

by 태옹 2021. 7. 13.

Create / Update

- Repository 단계에서 정의

메인함수 코드

package com.sparta.week02;

import com.sparta.week02.domain.Course;
import com.sparta.week02.domain.CourseRepository;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;

import java.util.List;

@EnableJpaAuditing
@SpringBootApplication
public class Week02Application {

    public static void main(String[] args) {
        SpringApplication.run(Week02Application.class, args);
    }

    // Week02Application.java 의 main 함수 아래에 붙여주세요.
    @Bean
    public CommandLineRunner demo(CourseRepository repository) {
        return (args) -> {// 데이터 저장하기
            repository.save(new Course("웹개발의 봄, Spring", "남병관"));

            // 데이터 전부 조회하기
            List<Course> courseList = repository.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 course = repository.findById(1L).orElseThrow(
                    () -> new IllegalArgumentException("해당 아이디가 존재하지 않습니다.")
            );
            System.out.println(course.getTitle());
            System.out.println(course.getTutor());
        };
    }
}

 

 

update

- service단계에서 정의

CourseService.java

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

main 함수 코드

Course new_course = new Course("웹개발의 봄, Spring", "임민영");
courseService.update(1L, new_course);

 

Delete

- Repository 단계에서 정의

main 함수 코드

courseRepository.deleteById(1L);
courseRepository.deleteAll();

'Spring > 개념지식 및 에러사항' 카테고리의 다른 글

Servlet vs Spring MVC  (0) 2021.12.27
[MyBatis] 동적 SQL  (0) 2021.08.08
[Spring] JPA 기초  (0) 2021.07.12
RestController 생성하기  (0) 2021.07.05
Log4j import에러  (0) 2021.07.02

댓글