본문 바로가기
JPA

JPA 기초

by watergrace2u 2023. 11. 8.
반응형
SMALL

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 가 자동으로 구현해준다.

이렇게 자동으로 구현된 클래스에는 여러 기본 메소드가 포함되어 있다.

 

 

반응형
LIST

'JPA' 카테고리의 다른 글

단방향 연관관계 : Single-Valued Association  (0) 2023.11.09
23.09.06.이제 익숙해지기 시작한다.  (0) 2023.09.06

댓글