1) REST API
: 클라이언트의 URL 요청에 대해서 JSON 형태의 데이터를 출력하는 서버의 메소드
2) JSON (Javascript Object Notation)
: 서버와 클라이언트 사이에 데이터를 주고 받을 때 흔히 사용되는 포맷.
JS언어의 객체나 배열의 문법과 동일하다.
3) @RestController
- Spring MVC 프레임웍에서 REST API 서비스를 구현할 때, 컨트롤러에 붙이는 애노테이션.
- @RestController 가 붙은 액션 메소드는, 데이터를 클라이언트에게 전달하기에 뷰가 필요없다. 그래서 뷰 대신에 클라이언트에게 전송하기 위한 데이터를 리턴한다.
- 리턴하는 자바 객체는 자동으로 JSON 포맷으로 변환되어 클라이언트에게 전송된다.
4) @ResponseBody
- 컨트롤러의 액션메소드 앞에 @ResponseBody 가 붙으면,
이 액션메소드가 리턴하는 자바 객체는 자동으로 JSON 포맷으로 변환되어 클라이언트에게 전송된다.
- 만약 컨트롤러 앞에 이미 @RestController 를 붙였다면, @ResponseBody 를 생략해도 된다.
데이터 객체 리턴 주의!! (뷰가 아님!)
5) @RequestBody
서버가 클라이언트로부터 JSON 포맷으로 전송된 request parameter 를 받을 액션메소드의 파라미터 변수에는 이 어노테이션을 붙여줘야 한다.
(만약, request parameter 가 JSON포맷이 아니라면, @RequestBody를 붙이면 안된다)
6) REST API URL 패턴
- query string 사용하지 않기
ex>
(X) http://localhost:8080/studentServer/api/student?id=3
(O) http://localhost:8080/studentServer/api/student/3
Request Method = GET
- 동사 사용하지 않기
ex>
(X) http://localhost:8080/studentServer/studentDelete?id=3
(O) http://localhost:8080/studentServer/api/student/3
Request Method = DELETE
7) @PathVariable
요청된 URL이 다음과 같다면... => http://localhost:8080/jpa10/api/student/3
URL에 들어있는 id 값 3을 받기 위한 액션 메소드는 다음과 같이 구현한다.
@RequestMapping("api/student/{id}")
public Student student(@PathVariable("id") int id)
8) 액션메소드 URL
이 코드에서 list 액션메소드를 호출하기 위한 URL은,
"student/list" 이다.
9) JPA (Java Persistence API)
: 대표적인 Java ORM 기술이다. (mybatis 와 함께)
10) JPA Entity 클래스
- mybatis 의 DTO 클래스에 해당하는 클래스다.
- 데이터베이스 테이블의 레코드에 해당하는 클래스다.
- 데이터베이스 조회결과가 자동으로 엔티티 클래스 객체에 채워져 리턴된다.
@Entity
: JPA Entity 클래스 앞에 @Entity 어노테이션을 붙여야 한다.
@Id
: 기본키(primary key)에 해당하는 멤버 변수에 @Id 어노테이션을 붙여야 한다.
@GeneratedValue(strategy = GenerationType.IDENTITY)
: 기본키가 Auto Increment 필드이거나 Identity 필드인 경우에
이 어노테이션을 붙여야 한다.
11) JPA Repository
- mybatis 의 mapper 인터페이스에 해당.
public interface DepartmentRepository extends JpaRespository<Department, Integer> { }
=> Department: 엔티티 클래스 이름
=> Integer: primary key의 타입
이 인터페이스를 구현한 클래스를 spring JPA 가 자동으로 구현해준다.
이렇게 자동으로 구현된 클래스에는 여러 기본 메소드가 포함되어 있다.
'JPA' 카테고리의 다른 글
단방향 연관관계 : Single-Valued Association (0) | 2023.11.09 |
---|---|
23.09.06.이제 익숙해지기 시작한다. (0) | 2023.09.06 |
댓글