2주차 정리

Today Jeeho Learned·2022년 6월 7일
0

내껄로만들기

목록 보기
2/4
post-thumbnail

Rest / Controller

  • rest는 서버의 응답이 json형식임을 나타낸다.

  • 클라이언트 요청을 전달받는 코드를 controller라고 부르고

  • json만으로 돌려주는 것을 restcontroller라고 한다!

  • 우리가 배우는 spring은 서버를 다루는 것이다.

  • api는 클라이언트와 서버가 서로 상호작용하는 창구!

controller

controller을 따로 패키지로 만들어서 각자 객체에 따른 컨트롤러를 만들어준다.
그냥 일반 클래스로 알고있는데, 아직 JSON으로 응답하는 자동응답기임을 알려줘야한다.
어떻게 ?

어노테이션이라는 것을 사용해서 @RestController임을 붙여줘야한다.
@RESTCONTROLLER임을 붙여줌으로써 일반 클래스가 아니라, 응답하는데 최적화 된 빵틀이 된 것이다.

@RestController
public class CourseController {

    @GetMapping("/courses")
    public Course getCourses() {
        Course course = new Course();
        course.setTitle("웹개발의 봄 스프링");
        course.setDays(35);
        course.setTutor("남병관");
        return course;
    }
}

자 이렇게 get요청을 매핑해줬는데 Course메소드는 어떻게 실행될까 ?
우리는 메소드만 잘 만들어주고, 매핑만 잘해주면 원하는 요청이 들어왔을때 스프링이 알아서 다해준다.

JPA , Repositroy

  • JPA
    SQL를 쓰지 않고, 자바를 통해서 데이터를 생성, 조회, 수정, 삭제할 수 있도록 해주는 번역기다.

따로 설정은 아래의 한줄이면 설정이 가능하다. 그런데 처음에 dependency에서 추가해줘서 따로 설정해줄필요가 없다.

implementation 'org.springframework.boot:spring-boot-starter-data-jpa'

자바를 통해서 sql형식으로 데이터를 다를수있다!!

추가로 spring에서 domain 또는 entity라는 녀석들은 mysql에서 테이블에 대응되는 녀석들이 있다.

  • Repositroy
    JPA를 작동시키는 매개체이다.
    Repository에 쓰여있는 코드가 jpa코드를 사용하는 것과 똑같다.
    레포지토리는 인터페이스로 생성한다.
  • DTO
    현업에서는 데이터를 주고 받을때 dto라는 것을 사용한다. 절대 클래스의 모델을 직접사용하지 않는다.

domain

  • course

domain 폴더 안에 course와 courseRepo를 같이 만들어준다.
이때 repository는 인터페이스로 만들어줘야한다.
인터페이스는 클래스에서 멤버가 빠진 메소드의 모음집으로 보면 된다. 메소드가 잔뜩있는 녀석이구나를 생각할 수 있다.

여기서 public class course위에 @entity를 써주면서 course가 테이블 역할을 할 것임을 명시해주면서 스프링에게 알려준다. 그위에 @noargsconstructor은 arg는 메소드 만들때 쓰는 파라미터인데, 없어도 기본생성자를 자동으로 넣어줘라 라는 뜻이다.

자바코드를 통해서 테이블을 만들어가는 과정이다.

위의 SQL과 같다고 보면 된다.

setter은 repository에서 자동으로 해주기 때문에 getter만 한다.

  • courserepository
    코스에 대한 repository이다. 그리고 상속을 통해서 JpaRepository<>기능을 가져와서 사용한다는 뜻이다. 이것을 쓸때 아이디 형태가 long인 Course라는 녀석으로 사용해준다고 표시해준다.
profile
기록해야 (살아)남는다 !

0개의 댓글