티스토리 뷰

Study/Spring

스프링 정리(3)

giiro 2021. 8. 13. 00:39

1. @RequestBody, @ModelAttribute, @RequestParam


  • 클라이언트의 요청 값을 객체로 바인딩하는 데에 사용되는 방식이라는 점에서 공통점이 있지만 서로 차이점이 존재한다.
    • 어노테이션 없이 파라미터로 단순 타입이 들어오는 경우 → @RequestParam이 생략된 것이라고 여김
    • 그 외의 나머지 경우 → @ModelAttribute가 생략된 것이라고 여김
  • @RequestParam = 한 개의 Http요청 파라미터를 받기위해 사용함. 기본값으로(required = true)이기에 false로 바꿔주지 않는 이상 반드시 파라미터가 존재해야 함
  • @RequestBody = 클라이언트가 전송한 HttpBody내에 있는 JSON형식의 내용을 객체로 변환시켜주는 역할을 함. 
  • @ModelAttribute = 클라이언트가 전송한 여러 파라미터를 1:1로 객체에 바인딩한 후 다시 View로 데이터를 넘김. 이때 객체에 바인딩하는 과정에서 객체를 생성하기 위해 Setter가 정의되어있어야 함

과정 

1. 파라미터로 들어온 타입과 매칭 되는 객체를 생성한 후, 넘어온 값들을 자동으로 바인딩함

2. 객체가 자동으로 Model객체에 추가되고, 뷰 단으로 전달됨.

 

2. JSON객체 → 원하는 객체 매핑


  • objectMapper을 사용하여 원하는 객체로 매핑할 수 있음
// Json형식의 데이터가 String으로 messageBody에 저장되어있을 때
MyData myData = objectMapper.readValue(messageBody, MyData.class);

 

3. EntityManager


  • Entitye들을 관리하는 객체이며 테이블과 매핑된 Entity들을 실제로 CRUD를 하는데에 있어서 사용함.
  • 여러 스레드가 동시에 접근하면 동시성 문제가 발생하므로 스레드 간에 절대 공유하면 안 됨

 

4. @persistenceContext 


  • DB에서 사용하는 Persistance (영속성)이라고 하면 크게 와닿지 않는다. 메모리에서 사용하는 비휘발성이라고 생각해도 될듯함.
  • @Entity를 붙여 테이블과 매핑한 객체 Entity들을 영구적으로 저장하고 관리하는 환경임.

'Study > Spring' 카테고리의 다른 글

스프링 정리(4)  (0) 2021.08.21
스프링 정리(2)  (0) 2021.08.08
스프링 정리(1)  (0) 2021.08.03
IOC, DI, 컨테이너  (0) 2021.01.14
회원 도메인 개발 (순수 자바코드로)  (0) 2021.01.14
댓글