TIL - day22

정상화·2023년 3월 22일
0

TIL

목록 보기
18/46
post-thumbnail

ToString에 의한 순환참조

연관관계에 있는 두 엔티티에 toString을 정의하면 잘못하면 순환 참조가 일어날 수 있다.

Question엔티티와 Answer엔티티가 일대다 관계를 갖고 두 엔티티의 toString내부에서 상대 객체를 참조할 때
Question에서 Answer를 참조 -> Answer에서 Question을 참조 -> Question에서 Answer를 참조 ...
이런식으로 무한 반복이 일어날 수 있으므로 주의해야 한다.

Optional

Optional은 값(혹은 객체)를 담는 상자이다. Optional객체가 가지는 진짜 값은 get()메서드를 통해 참조할 수 있다.

어떤 객체가 null일 수도 있고 null이 아닐 수도 있는 상황에서 객체를 참조하는 것은 NullPointerException 의 불안감을 갖게 한다.

OptionalisPresent()혹은 isEmpty()메서드를 통해 값의 실제 유무를 확인할 수 있기에 유용하다.

GET과 POST의 파라미터 전송차이

HTML의 폼데이터와 쿼리스트링 파라미터는 애플리케이션에선 사실상 같은 방법으로 취급된다.

GET의 경우 파라미터가 url의 쿼리스트링으로 전송되고, POST의 경우에는 요청 바디에 담겨서 전송된다. 어느쪽이든 파라미터는 키와 값으로 이루어진 쌍으로 전송된다.

리다이렉트

컨트롤러의 메서드가 HTML을 반환하는 스타일에서
return "redirect:/" 형태로 반환하면 응답으로 리다이렉트를 보낸다.

리다이렉트를 받은 클라이언트는 응답의 location헤더의 주소로 다시 요청을 보낸다.

처리요청을 하고 빨리 떠나는 편이 좋다.

쇼핑몰에서 물건을 구입하고 '구매가 완료되었습니다.' 와 같은 메시지가 뜨고 몇 초후 창이 바뀌는 것을 볼 수 있다. 이것이 리다이렉트의 예이다.

리다이렉트를 하지 않고 사용자가 새로고침을 하면 구매요청이 또 일어나 중복구매가 일어날 수도 있는 것이다.

profile
백엔드 희망

0개의 댓글