programming study/B-JPA

SpringBoot, JPA - '톰캣 시작' 및 'http request 요청' 흐름

gu9gu 2022. 12. 29. 01:28

1. 톰켓 시작

2. 필터, 디스패처, DataSource, 세션, 인터셉터, viewResolver 를 메모리에 띄운다

3. 서버에 http 요청이 오면 디스패처가 http 요청을 받아 해당하는 url이 맵핑된 컨트롤러를 메모리에 띄우고 http body에 있는 데이터를 컨트롤러에서 사용할 수 있게 해준다. 컨트롤러에서 db session이 시작된다.

 

[로그인 요청]

4.서버 내부 로직에 의해 service단까지 가서 JPA Repository를 통해 영속성 컨텍스트에 해당 오브젝트(user)가 존재하는지 조회한다.

 1) 없으면 DB에 쿼리를 날려서 받은 데이터를 영속성컨텍스트에 저장하고 service단으로 가져온다.

 2) 있으면 바로 service 단까지 데이터를 가져온다.

5. service단에서 user가 null 아니면 session에 user를 등록한다.

6. controller단에서 db session이 종료된다.

7. viewResolver를 통해 지정해놓은 화면으로 이동한다. 또는 데이터만 반환할 수 있다.

 

[회원가입 요청]

4. service단에서는 transaction이 시작된다.

5. JPA Repository를 통해 영속성컨텍스트에 오브젝트에 오브젝트가 없을테니 db에 insert

6. service단까지 다시 응답이 돌아오고 service단이 끝나면 transaction이 종료되면서 db에 commit된다.

7. controller단에서 db session이 종료된다.

8. viewResolver를 통해 지정해놓은 화면으로 이동한다. 또는 데이터만 반환할 수 있다.

 

[회원수정 요청]

4. service단에서는 transaction이 시작된다.

5. JPA Repository를 통해 영속성컨텍스트에 오브젝트에 오브젝트 확인

  1) 없으면 db에 update

  2) 있으면 영속성 컨텍스트에 있는 객체 update 후 db에 flush

6. service단까지 다시 응답이 돌아오고 service단이 끝나면 transaction이 종료되면서 db에 commit된다.

7. controller단에서 db session이 종료된다.

8. viewResolver를 통해 지정해놓은 화면으로 이동한다. 또는 데이터만 반환할 수 있다.