기본적으로 엔티티를 주는거 자체가 안좋음 dto로 줘야함
lazy로딩 = 게터 호출될때
json 로딩 시점에 게터로 호출되면 lazy로딩으로 엔티티의 필드로 있는 엔티티의 null값을 찾음.
@ResponseBody로 데이터 자체를 주니까 messageconverter가 발동함
dto가 아니라 entity니까 messageconverter가 게터 호출되는 시점에서 lazy로딩
이후에 json 변환
(@ResponseBody 말고 그냥 view를 줬다면 null인거 요청하지 않는 한 lazy로딩 안됐을거임)
entity(영속화된거)를 게터로 호출할때 lazy 로딩되니까
그걸 dto로 복사해서 dto(영속화 안됨)를 주면 lazy로딩이 안됨
전체 새로고침 안하고 ajax로 일부분만 클라이언트 사이드 랜더링 (CSR)
그냥 뷰를 주면 서버 사이드 랜더링 (SSR)
(Asynchronous JavaScript and XML)
클라이언트와 서버 간의 비동기적인 데이터 교환을 통해 웹 페이지의 일부분만 업데이트하거나 랜더링하는 기술
비동기 통신: AJAX는 비동기적인 방식으로 서버와 통신하므로 페이지가 전체적으로 새로고침되지 않아도 됩니다. 이로써 사용자는 보다 빠른 데이터 로딩과 사용자 경험을 얻을 수 있습니다.
부분 업데이트: 필요한 부분만 업데이트하므로 웹 페이지의 일부분만 변경되고 다른 부분은 그대로 유지됩니다. 이는 더 나은 성능과 응답성을 제공합니다.
사용자 경험 향상: 페이지 새로고침 없이도 사용자의 입력에 반응할 수 있어서 사용자 경험을 향상시킵니다. 예를 들어, 검색 결과를 동적으로 업데이트하거나 채팅 기능을 구현할 수 있습니다.
서버 부하 감소: 전체 페이지를 로드하지 않아도 되므로 서버의 부하가 감소하고 대역폭을 절약할 수 있습니다.
더 나은 인터랙션(상호작용): AJAX를 통해 더 다양한 유형의 인터랙션을 구현할 수 있습니다. 예를 들어, 드래그 앤 드롭, 실시간 업데이트, 자동 완성 기능 등이 있습니다.