JPA / Hibernate Architecture💡 체크: 객체는 '참조'를 통해 관계를 맺고, DB 테이블은 '외래 키(FK)'를 통해 관계를 맺는다.1. 연관 관계의 4가지 유형@OneToOne (1:1): 회원이 하나의 프로필을 가지는 것과 같은 관계@ManyToOne (N:1): 여러 개의 게시글이 하나의 게시판에 속하는 관계입니다. 실무에서 가장 많이 쓰이는 구조@OneToMany (1:N): 하나의 부서에 여러 사원이 있는 관계입니다. 보통 N:1의 반대 방향@ManyToMany (N:M): 학생과 과목의 관계입니다. 실무에서는 사용을 지양하고, 중간 엔티티를 두어 1:N - N:1로 풀어내는 것이 정석입니다.2. 단방향 vs 양방향, 그리고 '주인'객체는 한 쪽만 참조하면 단방향, 양쪽..
Spring Boot / HTTP Client서버 간 통신의 정석: RestTemplate 완벽 가이드GET, POST부터 만능 도구 exchange 정리💡필수 개념: 현대의 백엔드는 혼자 일하지 않습니다. 외부 API(카카오 결제, 기상청 데이터 등)를 호출하거나 다른 마이크로서비스와 통신해야 한다 스프링에서 가장 대중적으로 사용하는 동기식 HTTP 클라이언트가 RestTemplate1. RestTemplate: 서버를 위한 브라우저우리가 브라우저를 통해 웹사이트에 접속하듯, 서버가 다른 서버에 HTTP 요청을 보낼 때 사용하는 도구.동기(Blocking) 방식으로 동작동기 방식이란? -> 앞선 작업이 끝날 때 까지 다음 작업이 대기해야 하는 통신 방식을 의미 함.-> 요청을 보낸 클라이언트는 서버로..
Spring Boot / Validation데이터 검증(Validation)Bean Validation💡 핵심 요약: 데이터 검증은 서버의 첫 번째 방어선입니다. 컨트롤러에서 일일이 if(data == null)을 작성하는 대신, 표준화된 Bean Validation을 통해 코드를 깔끔하게 관리할 수 있다.1. if문 대신 애너테이션으로 자동화과거에는 들어오는 데이터가 유효한지 확인하기 위해 서비스 로직 절반이 검증 코드였다.하지만 스프링은 애너테이션 하나로 이 과정을 자동화해주는것이다 자주 쓰는 검증 애너테이션@NotBlank: null이 아니고, 최소 한 글자 이상의 공백이 아닌 문자가 포함되어야 함.@Size(min=x, max=y): 문자열, 컬렉션 등의 크기를 제한함.@Email: 이메일 형식..
무상태(stateless)에서 기억하는 방법HTTP는 기본적으로 무상태이므로 과거의 요청기록을 알 수 없다. HTTP가 무상태를 선택한 가장 큰 이유는 적은 자원으로 다수의 요청(Request)를 처리할 수 있기 때문이다. 하지만 과거의 방문 기록을 추적하는 기법이 필요하게 되었고 이 기법들을 세션 트랙킹(session tracking) 이라고 한다.Servlet / Web DevelopmentHTTP 무상태(Stateless)를 극복하는 기술: 쿠키, 세션, 필터, 리스너서버가 클라이언트를 기억하고 관리하는 방법💡 핵심 개념: HTTP는 무상태(Stateless) 프로토콜입니다. 적은 자원으로 많은 요청을 처리할 수 있는 장점이 있지만, 과거 요청을 기억하지 못한다는 단점도 있죠. 이를 해결하기 위..
Spring Boot 💡 시작하며: HTTP 프로토콜은 Stateless(무상태) 특징을 가지고 있어, 서버는 방금 전 요청을 보낸 사람이 누구인지 기억하지 못합니다. 우리가 로그인 후 페이지를 이동해도 로그아웃되지 않는 이유는 바로 '쿠키'와 '세션' 덕분입니다.1. 쿠키 (Cookie): 브라우저에 저장되는 작은 정보쿠키는 서버가 클라이언트(브라우저)에게 보내는 작은 텍스트 파일입니다. 브라우저는 이 정보를 보관하고 있다가, 다음에 같은 서버에 요청을 보낼 때마다 쿠키를 함께 담아서 보냅니다.저장 위치: 클라이언트(웹 브라우저)동작 방식: 서버가 응답 헤더에 Set-Cookie를 담아 보내면, 브라우저가 이를 저장합니다.단점: 보안에 취약합니다. 클라이언트 측에서 수정이 가능하고, 네트워크를 통해 ..
Spring Boot / Security💡 한 줄 정리: 인증은 '누구인지' '너 누구야?' 확인하는 것이고, 인가는 확인된 사용자가 '무엇을 할 수 있는지' 확인하는 것1. 인증 (Authentication): 너 누구니?인증은 해당 서비스에 접근하려는 사용자가 본인이 맞는지 신원을 확인하는 과정입니다. 가장 쉬운 예로 웹사이트에 로그인하는 행위가 바로 인증입니다.목적: 시스템을 사용하는 주체의 신원을 증명함수단: 아이디/비밀번호, 생체 인식, 일회용 비밀번호(OTP) 등비유: 호텔에 도착해 신분증을 제시하고 본인임을 확인받는 과정2. 인가 (Authorization): 이건 해도 돼!인증을 통해 누구인지 확인되었다면, 이제 그 사용자가 어떤 권한을 가지고 있는지 확인하는 과정이 인가입니다. 사용자가..