[내일배움캠프] #211104 💻 TIL 💻

이수영·2021년 11월 5일
0

MY TIL 

목록 보기
32/50
post-thumbnail

📚 SpringBoot

✍🏻 SpringBoot 수업 복습

📌 Annotation

  • 스프링에게 이런 역할이 있어 ~ 하고 알려줌

📌 Abstract (추상)

  • 직접 구현 안된다 . 상속으로만 쓸 수 있음

📌 Controller , Service , Repository

✔ Controller

  • EX ) controller 예시 코드

@RequiredArgsConstructor //final 변수는 꼭 필요한 것이므로 생성자 만들어줌 
@RestController //json 으로 응답해야하므로 표시해줌 
public class LectureController {

    private final LectureRepository lectureRepository;

    @GetMapping("/api/lectures")
    public Lecture createLecture(@RequestBody LectureRequestDto requestDto) {
        // requestDto 는, 생성 요청을 의미합니다.
        // 강의 정보를 만들기 위해서는 강의 제목과 튜터 이름이 필요하잖아요?
        // 그 정보를 가져오는 녀석입니다.

        // 저장하는 것은 Dto가 아니라 Course이니, Dto의 정보를 course에 담아야 합니다.
        // 잠시 뒤 새로운 생성자를 만듭니다.
        Lecture lecture = new Lecture(requestDto);

        // JPA를 이용하여 DB에 저장하고, 그 결과를 반환합니다.
        return lectureRepository.save(lecture);
    }
}

@GetMapping("/api/lectures")
=> /api/lectures라는 주소로 get 방식으로 요청이 오면 아래 코드 실행

✔ Service

  • 중간 부분 , 실제 중요한 작동이 많이 일어나는 부분
  • Update는 밖에서 요청이 들어와서 데이터에게 수정이 들어가야함 => Service 이용
  • Update 어떤 것을 update 할건지 가리켜주는 것 필요(Id) , 업데이트한 정보를 갖고올 것 필요!

✔ Repository

자바로 DB를 사용하도록 도와주는 것이 JPA이다.
DB에서의 테이블과 SQL이 자바에서의 domain과 repostiory 이다.

테이블 - Domain
'SQL' - Repository

📌 Lombok

  • 코드를 절약하기 위한 요소

✔ Ex ) @Getter

  • 객체의 getter 메소드 자동으로 생성

✔ Ex ) @NoArgsConstructor

  • 기본생성자 자동으로 생성해줌

✔ Ex ) @RequiredArgsConstructor

  • 생성자를 자동으로 생성해줌 , 위에서 선언해주면 아무 메소드에서나 자유롭게 가져다 쓸 수 있음

📌 DTO

  • 데이터를 주고 받을 때에는 새로 클래스 만들어서 하자 ! 기존 클래스 사용하지 말자
    (기존 클래스는 DB와 연결되어 있어 오류날 가능성 큼)
  • EX ) 적용
LectureRequestDto requestDto = new LectureRequestDto("웹개발의 봄, Spring", "임민영");

변경할 데이터를 물고 다닐 녀어석 ~

  • Ex ) 정의
@RequiredArgsConstructor
@Getter
@Setter //물고다닐 데이터 설정
public class LectureRequestDto {
    // update 하려는 데이터
    private final String title;
    private final String tutor;
    // 없을 수 잇어서 생성하면 오류날 수도 있는데 @RequiredArgsConstructor 때문에 오류 안남

}

📌 JPA

  • LecturRepository.java 인터페이스
public interface LectureRepository extends JpaRepository<Lecture, Long> {
}

JpaRepository<Lecture, Long>는 인터페이스에 미리 검색 메소드를 정의해두는 것으로 메소드를 호출하는 것만으로 스마트한 데이터 검색을 할 수 있게 된다. JPA는 인터페이스로만 사용가능함, 클래스에서 멤버가 빠진 메소드 모음집
즉 , JpaRepository 기능을 가져와서 LectureRepository가 사용하겠다 ~ 라는 뜻
<>안에는 엔티티 클래스 이름과 ID 필드 타입

  • JPA 실행코드

@Bean
public CommandLineRunner demo(LectureRepository lectureRepository) {
    return (args) -> {ㅎ
        Lecture course = new Lecture("웹개발의 봄", "남병관");
        // jpa 를 상속한 LectureRepository 를 선언해서 아래와 같은 명령어 가능
        // 쿼리문 대신 자바문으로 DB조작 가능
        lectureRepository.save(course); //create 부터 insert까지의 기능
        lectureRepository.findAll(); // SQL 의 select 기능 
    };
}

📌 REST

  • 주소에 명사, 요청 방식에 동사를 사용함으로써 의도를 명확히 드러냄을 의미
    ex ) PUT -> 수정요청
profile
Hongik Univ 💻

0개의 댓글