Spring - 코드 읽기, CRUD

0

Spring

목록 보기
3/23

JPA 심화

: CRUD에 대해 배워보자. 일단 C, R부터

// 데이터 저장하기
repository.save(new Course("프론트엔드의 꽃, 리액트", "임민영"));
// repository : sql이용할 때 씀 


// 데이터 전부 조회하기
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(
 //findById: 아이디 1개만 특정해서 찾을것. 데이터 1개 넣었으니 1, 그리고 타입이 Long
 //or: 찾던가, Throw: 뭔가 오류가 발생했을 때 이렇게 해라.
   
        () -> new IllegalArgumentException("해당 아이디가 존재하지 않습니다.")
); // (): 어떻게 해야하는지 직접 메소드 작성
// Exception: 대처방법

Service 영역의 update

service package 안에 CourseService.java

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

	// final: 서비스(이 클래스)에게 꼭 필요한 녀석임을 명시, 한 번 값이 부여되면 변형X
    private final CourseRepository courseRepository;

// 생성자를 통해, Service 클래스를 만들 때 꼭 Repository를 넣어주도록 스프링에게 알려줌
// courseRepository를 내가 언제든 쓸 수 있게 스프링이 생성해서 넘겨줌
    public CourseService(CourseRepository courseRepository) {
        this.courseRepository = courseRepository;
    }

    @Transactional // SQL 쿼리가 일어나야 함을 스프링에게 알려줌
    public Long update(Long id, Course course) { 
// 1. 어떤애를 업데이트 할건지 가리켜주는 id,
// 2. 업데이트할 정보를 가져오는 애 course(title,tutor 정보가 있을 것)
        Course course1 = courseRepository.findById(id).orElseThrow(
                () -> new IllegalArgumentException("해당 아이디가 존재하지 않습니다.") 
        ); 
// Repository이용해서 id도 이용해서 find하고 없으면 메세지 띄움.
// 그 id에 해당하는 녀석이 1이라면 course1에 1이 저장될 것, 2라면 course1에 2
        course1.update(course); 
//course1이 update되도록 메소드를 설정하면, 전달받은 저 위의 course정보가 parameter로 넘어와서 업데이트됨.
        return course1.getId();
    // 업데이트 될 때 어떤녀석이 업데이트 됐는지 알려주기 위해서 id를 돌려줌. 
    }
}

Update 실행 코드

  • Week02Application 에 넣어줌.
@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", "임민영");
// 튜터이름은 같고, 강의제목만 바뀐 형태로 new_course 만들어줌
// 저장하는게 아니라, 기존의 data를 변경하는 용도로 씀
        courseService.update(1L, new_course);
        // 아이디가 1인 녀석의 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());
        }
    };
    // courseRepository.deleteAll();
    // courseRepository.deleteById(); - 특정 1개의 아이디 삭제
    // 삭제는 위에 코드는 다 같고, 이 한 줄만 추가해 주면 됨. 
}
profile
백엔드를 공부하고 있습니다.

0개의 댓글