본문 바로가기
Java/Spring

23.07.07) Spring 강의 노트

by NH_club 2023. 7. 7.
save 메서드가 없는데 DB에 어떻게 저장이 되는 것일까?
더보기

영속성 컨텍스트의 변경감지 기능 때문이다.

영속성 컨텍스트는 엔터티 객체를 효율적이고 쉽게 관리하기 위해서 만들어진 공간이다.

이 영속성 컨텍스트는 내부에 1차 캐시라는 저장공간이 따로 있다 여기에는 엔터티 객체가 담기게 된다.

우리가 JPA로 쿼리메서드를 날리게 되면 영속성 컨텍스트 내부 저장 공간인 1차 캐시에서 먼저 객체를 찾아보고 없으면 그 때 DB에 조회하는 쿼리를 날려 객체정보를 갖고 와 1차 캐시에 저장시킨다. 그렇게 1차 캐시에는 DB에서 조회된 객체의 초기 상태가 담기게 된다. 그리고 마지막으로 우리가 수정한 부분이 commit이 되어 DB에 반영 되기 전에 1차 캐시에 저장된 초기 상태와 현재 상태를 서로 비교해본다. 만약 여기서 초기상태와 다를 경우 변경된 상태로 DB에 반영시킨다. 이것이 영속성 컨텍스트의 변경감지 기능이다.

Jackson을 사용하지 않고 JSONObject를 사용한 이유?
더보기

JSONObject와 Jackson은 모두 JSON 데이터를 처리하는 데 사용되는 라이브러리이다.

차이점은 성능, 기능성, 유연성등은 Jackson이 뛰어나다 그럼 JSONObject를 사용 안하면 되나?
그것은 개발자의 선택이지만 JSONObect는 코드가 상대적으로 간단하고 간결하기 때문에 간단하다. 복잡한 JSON 데이터를 처리하는 것이 아니라, 간단하게 JSONObect로도 충분히 처리할 수 있다면 JSONObject는 간결하고 이해하기 쉽기 때문에 사용된다.

System.out.println()을 사용하지 않고 로깅을 사용하는 이유?
더보기

Sout은 동기화된 메서드 이므로 다중 스레드 환경에서 성능 저하를 일으킬 수 있지만 로깅은 비동기 로깅을 지원하여 성능을 향상 시킬 수 있다. 그 외에도 로깅은 다양한 기능을 제공하고 관리, 커스텀등 다양한 방향으로 활용할 수 있지만 Sout은 그런 기능을 제공하지 않기 때문에 규모가 좀 있는 프로젝트에선 로깅을 사용하는 것이 일반적이다.

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

23.07.19) CORS 에러 해결  (0) 2023.07.19
23-07-09) Spring 강의 노트  (0) 2023.07.09
23.07.06) Spring 강의 노트  (0) 2023.07.06
23.07.01) Spring 강의 노트  (0) 2023.07.01
23.06.30) Spring 강의 노트  (0) 2023.06.30