개발자는신이야
The first step
개발자는신이야
전체 방문자
오늘
어제
  • 분류 전체보기 (114)
    • 🍃웹개발 Spring (15)
    • ❓내 질문 (4)
    • 🔥웹개발종합반 (11)
    • 💻개인프로젝트 (5)
    • 😕error (2)
    • 💡알고리즘 (3)
    • 📖혼자공부하는자바 (22)
    • 📑WIL (2)
    • 🥸 CS 면접 스터디 (13)
    • 🤓천재교육 풀스택 1기 노트 (21)
    • ⏰정처기 공부 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • IntelliJ
  • CRUD
  • boot
  • JPA
  • repository
  • dependencies
  • Lombok
  • 변수
  • Controller
  • CSS
  • HTML
  • jquery
  • Spring
  • Java
  • 기초
  • database
  • SQL
  • API
  • db
  • style

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
개발자는신이야

The first step

🍃웹개발 Spring

[Spring] JPA심화 (CRUD)_1

2022. 9. 27. 11:39

CRUD란

Create : 생성

Read    : 조회

Update: 변경

Delete : 삭제

 

DB의 데이터를 생성, 조회, 변경, 삭제를 하는 정보관리의 기본 기능을 줄여서 CRUD라고 한다.


 

CREATE & READ

Repository의 save(저장하기) -> Repository 사용하는 방법

 

Repository를 불러왔다면 Repository.java에서 정한 인터페이스명으로 Repository를 사용할 수 있다.

(이 글에서 Repository의 인터페이스명은 Course/ Main클래스 명은 Course로 한다.)

V

public interface CourseRepository extends JpaRepository<Course, Long> {
}

.

.

.

create & read 해보기

 

[Course.java]

package com.week02sec.week02sec.domain;

import lombok.Getter;
import lombok.NoArgsConstructor;
import javax.persistence.*;

@Getter
@NoArgsConstructor // 기본생성자를 대신 생성해줍니다.
@Entity // 테이블임을 나타냅니다.
public class Course extends Timestamped {

    @Id // ID 값, Primary Key로 사용하겠다는 뜻입니다.
    @GeneratedValue(strategy = GenerationType.AUTO) // 자동 증가 명령입니다.
    private Long id;

    @Column(nullable = false) // 컬럼 값이고 반드시 값이 존재해야 함을 나타냅니다.
    private String title;

    @Column(nullable = false)
    private String tutor;


    public Course(String title, String tutor) {
        this.title = title;
        this.tutor = tutor;
    }
}

 

[CrearteNRead.java]

// 데이터 저장하기
CourseRepository.save(new Course("프론트엔드의 꽃, 리액트", "임민영"));

// 데이터 전부 조회하기
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 course = CourseRepository.findById(1L).orElseThrow(
        () -> new IllegalArgumentException("해당 아이디가 존재하지 않습니다.")
);

출처: [스파르타코딩클럽] 웹개발의 봄, Spring 강의자료

@ReadNCreate.java 코드 분석

// 데이터 저장하기

CourseRepository.save(new Course("프론트엔드의 꽃, 리액트", "임민영"));

CourseRepository.save:

CourseRepository는 앞서 repository의 기능을 사용하기로 정한 인터페이스명이다.

즉 CourseRepository.save = repository.save 데이터를 저장한다는 뜻이다.

 

 

new Course("프론트엔드의 꽃, 리액트", "임민영"):

new Course: 미리 테이블로 만들어놓은 CourseClass에 아래 내용을 저장하겠다는 뜻.

(title: 프론트엔드의 꽃, 리엑트)

(tutor: 임민영)

 

 

// 데이터 전부 조회하기

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

List<Course> courseList = CourseRepository.findAll();

List<Course> courseList: Course 클래스의 모든 데이터를 리스트로 받아와서 courseList에 담아라.

CourseRepository.findAll(): 이후 모든 데이터를 찾아라.

 

Course course = courseList.get(i);

Course course = courseList.get(i): 순차대로 courseList에서 받아온 데이터를 course에 넣어라

 

 

// 데이터 하나만 조회하기
Course course = CourseRepository.findById(1L).orElseThrow(
        () -> new IllegalArgumentException("해당 아이디가 존재하지 않습니다.")
);

 

Course course: Course 클래스의 정보들을 course에 담는다.

CourseRepository.findByID(1L): 그중 1L인 아이디인 값을 찾아라(1L은 Course(Class)에서 id가 Long으로 선언되었다).

orElseThrow(): 만약 없다면

-> : 화살표 함수 (가르키는 것을 실행해라)

new IllegalArgumentException("해당 아이디가 존재하지 않습니다."): 에러메세지: 해당 아이디가 존재하지 않습니다. 를 출력

 

 

'🍃웹개발 Spring' 카테고리의 다른 글

[String] Lombok이란  (0) 2022.09.27
[Spring] JPA심화 (CRUD)_2, SpringBoot 서비스 구조  (1) 2022.09.27
[Spring] JPA 상속(extends)  (0) 2022.09.26
[Spring] JPA 기초(Domain, Repository)  (1) 2022.09.26
[Spring] JPA란.  (1) 2022.09.26
    '🍃웹개발 Spring' 카테고리의 다른 글
    • [String] Lombok이란
    • [Spring] JPA심화 (CRUD)_2, SpringBoot 서비스 구조
    • [Spring] JPA 상속(extends)
    • [Spring] JPA 기초(Domain, Repository)
    개발자는신이야
    개발자는신이야
    첫발을 내디딘 초보 개발자입니다.

    티스토리툴바