Spring JPA - 데이터 영속화란?
·
Spring Data JPA
문득 JPA를 사용하다 영속화란 단어를 계속보는데 궁금증이 들었다. 데이터 영속화가 뭔지 알아보자 1. 데이터의 영속화가 무슨 의미인가? 데이터의 영속화는 데이터를 장기적으로 보존하는 과정을 의미한다. 이는 일시적인 메모리 저장이 아닌, 데이터베이스와 같은 영구 저장 매체에 데이터를 저장하는 것을 포함한다. 이로 인해 시스템이 종료되거나 장애가 발생해도 데이터는 안전하게 보존된다. 데이터의 영속화는 데이터가 손실되지 않도록 보장하고, 데이터를 효율적으로 검색하고 처리할 수 있도록 한다. 2. 데이터 영속화의 장점 데이터의 영속화에는 다음과 같은 장점이 있다. 데이터 손실 방지: 데이터를 안정적인 저장 매체에 보존함으로써, 시스템 장애나 다른 문제로 인한 데이터 손실을 방지한다. 효율적인 검색 및 처리: ..
[Spring] 함수형 프로그래밍이란?
·
Spring + Java
함수형 프로그래밍에 대해 알아보자. 1. 함수형 프로그래밍이란?함수형 프로그래밍은 수학의 함수 개념을 프로그래밍에 적용한 패러다임이다. 이 패러다임에서는 순수 함수, 불변성, 고차 함수 등을 중시한다. 간단히 말해, 상태와 데이터를 변경하지 않고 함수를 조합하여 로직을 구성하는 방식이다. 순수 함수: 동일한 입력에 대해 항상 동일한 출력을 반환하며, 외부 상태에 의존하거나 변경하지 않는다.불변성: 데이터는 변경되지 않고, 새로운 데이터가 생성된다.고차 함수: 함수를 인자로 받거나 함수를 반환하는 함수다. 순수 함수 (Pure Function)순수 함수는 동일한 입력에 대해 항상 동일한 출력을 반환하며, 외부 상태에 의존하거나 변경하지 않는다. 이는 함수의 예측 가능성을 높이고, 테스트를 용이하게 만든다...
Spring Boot 폼 데이터 바인딩: @ModelAttribute 활용법
·
Spring 기초/Spring 기초 지식
이번 포스트에서는 @ModelAttribute를 활용한 데이터 바인딩 방식에 대해 알아보자 1. modelAttribute 방식으로 폼을 작성하고 전송하는 장점 데이터 바인딩의 용이성: modelAttribute 속성을 사용하여 폼 데이터를 모델 객체에 자동으로 바인딩할 수 있다. 이를 통해 컨트롤러에서 해당 모델 객체를 매개변수로 받아 데이터를 쉽게 처리할 수 있다. form 필드의 이름과 model 객체의 필드 이름이 일치하면 자동으로 데이터가 매핑되어 컨트롤러에서 별도의 데이터 추출 및 변환 과정 없이 데이터를 사용할 수 있다. 유효성 검증의 편의성: Spring MVC는 @Valid 어노테이션을 통해 데이터의 유효성을 검증할 수 있다. modelAttribute 방식을 사용하면 모델 객체에 @Va..
Spring Boot 웹 개발: JSP와 JSTL 활용하기 (3편)
·
Spring 기초/Spring 기초 지식2
이번 포스트에서는 spring과 Jsp 그리고 Jstl을 함께 사용하여 개발하는 방법을 소개한다. 1. Spring + JSP + JSTL 을 사용하여 코드작성하는 방법 JSP 파일 내에 직접 자바 코드를 작성하는 방식은 과거에 많이 사용되었지만, 최근에는 추천되지 않는 방식이 되었다. 대신, 서비스 로직은 서블릿이나 스프링 컨트롤러와 같은 다른 서버 사이드 컴포넌트에서 처리하고, JSP 파일은 주로 뷰(View)의 역할을 담당하는 것이 일반적이다. 서비스 로직에서 필요한 데이터를 처리한 후, 해당 데이터를 컨트롤러를 통해 JSP로 전달하는 방식을 주로 사용한다. 컨트롤러는 데이터를 Model 객체에 담아서 JSP로 전달하고, JSP는 JSTL(JavaServer Pages Standard Tag Lib..
Spring Boot 서블릿 연동: Spring과 서블릿의 관계 (2편)
·
Spring 기초/Spring 기초 지식2
이번 포스트에서는 Spring과 Servlet의 관계에 대해서 주로 설명한다. 1. Spring과 서블릿의 관계 1-1. 예시: 회원 가입 기능 개발 서블릿으로 개발한 경우 요리사의 직접 요리: 요리사(서블릿)가 직접 주문(회원 가입 요청)을 받고, 재료(데이터)를 준비하고, 요리(회원 저장)를 하고, 손님에게 음식(응답)을 전달한다. 단계: 주문을 받는다. 재료를 준비한다. 요리를 한다. 음식을 전달한다. Spring MVC로 개발한 경우 요리사와 웨이터의 협업: 요리사(컨트롤러)는 요리만 전문적으로 하고, 웨이터(디스패처 서블릿)가 주문을 받고 음식을 전달한다. 단계: 웨이터가 주문을 받는다. 요리사가 재료를 준비한다. 요리사가 요리를 한다. 웨이터가 음식을 전달한다. 위의 두 방식의 비교 및 설명 ..
Spring Boot 서블릿 기초: 서블릿 이해하기 (1편)
·
Spring 기초/Spring 기초 지식2
이번 포스트에서는 Spring에서 사용되는 서블릿에 대한 기본기를 설명한다. 1. 서블릿이란 서블릿(Servlet)은 웹 서버에서 실행되는 자바 프로그램으로, 클라이언트로부터의 요청을 처리하고 그 결과를 다시 클라이언트에게 전송하는 역할을 한다. 이는 주로 동적인 웹 페이지를 생성하기 위한 용도로 사용된다. 즉, 사용자가 웹 페이지를 요청할 때마다 새롭게 생성되는 콘텐츠를 만드는데 사용되는 도구 중 하나이다. 서블릿은 일반적인 자바 클래스와 마찬가지로 자바 코드로 작성된다. 하지만 일반적인 자바 프로그램과는 다르게 웹 서버 내에서 실행되며, HTTP 프로토콜을 이용하여 클라이언트와 통신한다. 이를 위해, 서블릿은 보통 HTTP 요청을 처리하는 메소드를 구현한다. 대표적인 예로는 doGet()과 doPos..
Spring Boot 심화: 커스텀 어노테이션 만들기 (2편)
·
Spring 기초/Spring 기초 지식
커스텀한 어노테이션(Custom Annotation)이란 무엇일까? 그리고 우리가 주로 사용하는 어노테이션을 분석해보자 1. 커스텀 어노테이션을 만드는 방법 Java에서는 사용자 정의 어노테이션을 만들 수 있다. 이를 위해선 @interface 키워드를 사용하면 된다. // @interface를 통해 어노테이션을 정의한다. public @interface MyCustomAnnotation { String value() default ""; int number() default 0; } 위의 예제 코드에서, MyCustomAnnotation은 어노테이션의 이름이다. value와 number는 이 어노테이션의 요소(또는 매개변수)이며, 기본값으로 각각 빈 문자열과 0을 가지고 있다. 어노테이션 요소의 유형은..
Spring Boot 3.1 & Spring Security 6: 로그인 프로세스 및 JWT 토큰 동작 설명 (10편)
·
Spring Security
지금까지 만든 시큐리티의 동작을 설명하겠다. 1. 로그인 과정 로그인 페이지 접근: 사용자는 웹 브라우저에서 로그인 페이지(/login)에 접근한다. 로그인 페이지에는 사용자 이름과 비밀번호를 입력할 수 있는 폼이 있다. 로그인 요청: 사용자가 자신의 사용자 이름과 비밀번호를 입력하고 "Login" 버튼을 클릭하면, AJAX 요청을 통해 서버에 로그인 요청(/user/login)이 전송된다. 인증 필터 처리: CustomAuthenticationFilter는 로그인 요청을 가로챈다. 이 필터는 UsernamePasswordAuthenticationFilter를 확장하여 구현되었다. 요청에서 사용자 이름과 비밀번호를 추출하여 UsernamePasswordAuthenticationToken 객체를 생성한다...