Persistence Layer(영속성 계층)
·
Spring
Persistence Layer(영속성 계층)는 소프트웨어 아키텍처에서 애플리케이션 데이터가 데이터베이스 또는 파일 시스템과 같은 영구 저장소에 저장되고, 필요 시 이를 검색하거나 수정하는 계층을 말합니다. Persistence Layer는 비즈니스 로직과 데이터 저장소 간의 중간 다리 역할을 하며, 데이터 접근과 관리를 책임집니다.1. Persistence Layer의 역할Persistence Layer는 데이터 저장소와 애플리케이션의 다른 계층 간의 분리와 추상화를 제공합니다. 주요 역할은 다음과 같습니다:데이터 저장 및 검색데이터베이스에 데이터를 저장하거나 불러오는 작업을 담당합니다.데이터 접근 로직 캡슐화데이터베이스의 구조와 접근 방식을 추상화하여 애플리케이션 코드에서 직접적으로 의존하지 않도록 ..
Transaction(트랜잭션)과 TCL(Transaction Control Language)
·
Spring
1. Transaction(트랜잭션)의 정의트랜잭션은 데이터베이스에서 실행되는 작업의 논리적인 단위입니다.트랜잭션은 여러 작업(쿼리)을 묶어 하나의 작업처럼 실행하며, 모두 성공하거나 모두 실패하도록 보장합니다.ACID 특성을 기반으로 동작합니다:Atomicity (원자성): 트랜잭션의 모든 작업은 성공하거나 실패하며, 일부만 실행되는 경우는 없음.Consistency (일관성): 트랜잭션 완료 후 데이터베이스는 항상 일관된 상태를 유지함.Isolation (격리성): 트랜잭션은 독립적으로 실행되어 다른 트랜잭션의 영향을 받지 않음.Durability (지속성): 트랜잭션 완료 후 변경된 데이터는 영구적으로 저장됨.2. TCL(Transaction Control Language)의 정의TCL은 트랜잭션을..
MariaDB 엔진 - InnoDB vs MyISAM
·
Spring
SHOW ENGINES;Engine Support Comment Transactions XA SavepointsEngineSupportCommentTransactionsXASavepointsInnoDBDEFAULTSupports transactionsYESYESYESMyISAMYESNon-transactional engineNONONOMEMORYYESStored in memoryNONONOCSVYESCSV storage engineNONONOEngine: 스토리지 엔진의 이름.Support: 엔진이 활성화되어 있는지 여부 (YES, NO, DEFAULT).Comment: 간단한 설명.Transactions: 트랜잭션 지원 여부.XA: 분산 트랜잭션 지원 여부.Savepoints: 트랜잭션 내의 저장 지점..
Swagger (REST API 문서화)
·
Spring
1. Swagger란?Swagger는 REST API를 설계, 빌드, 문서화, 소비하는 데 유용한 도구입니다. Spring Boot에서는 Springdoc OpenAPI 라이브러리를 사용하여 Swagger UI를 쉽게 설정할 수 있습니다.2. Gradle 프로젝트에서 Swagger 적용 단계1단계: 의존성 추가build.gradle 파일에 다음 의존성을 추가합니다:dependencies { implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.6.0' }2단계: Swagger 관련 설정 추가Springdoc OpenAPI는 기본적으로 /swagger-ui/index.html 경로에서 API 문서를 제공합니다. 일반적인 설정은 추가로..
CORS (Cross-Origin Resource Sharing)
·
Spring
1. CORS란?CORS(Cross-Origin Resource Sharing)는 웹 브라우저 보안 정책으로, 특정 도메인에서 다른 도메인 리소스에 대한 요청을 제어합니다.브라우저는 기본적으로 Same-Origin Policy(동일 출처 정책)를 따르며, 다른 도메인의 리소스 요청을 차단합니다.동일 출처 정책: 요청의 프로토콜, 도메인, 포트가 동일해야 함.CORS는 이러한 제한을 완화할 수 있도록 서버에서 적절한 헤더를 설정하여 특정 출처(origin)에 대해 리소스 접근 권한을 부여합니다.2. CORS의 동작 흐름2.1 기본 요청 흐름클라이언트:브라우저가 XMLHttpRequest, Fetch API, 등의 방식으로 리소스를 요청.브라우저:요청이 다른 도메인(origin)으로 향할 경우 CORS 정..
AJAX(Asynchronous JavaScript and XML)
·
Spring
1. AJAX란?1.1 정의AJAX(Asynchronous JavaScript and XML)는 웹 페이지를 새로 고침하지 않고도 서버와 비동기적으로 데이터를 주고받을 수 있게 해주는 기술입니다.XML뿐만 아니라 JSON, HTML, 일반 텍스트 등 다양한 데이터 형식을 사용할 수 있습니다.1.2 AJAX의 주요 목적사용자 경험 개선:페이지 전체를 다시 로드하지 않고 필요한 데이터만 갱신.효율적인 데이터 통신:필요한 데이터만 서버에서 가져와 네트워크 사용량 감소.2. AJAX의 주요 구성 요소2.1 핵심 기술HTML/CSS: 사용자 인터페이스(UI) 설계.JavaScript: 클라이언트와 서버 간 데이터 요청 및 응답 처리.XMLHttpRequest 또는 Fetch API: 서버와 비동기 데이터 통신.서..
스프링 OAuth2 클라이언트 세션 15 : OAuth2AuthorizedClientService
·
Spring Security/OAuth2
OAuth2AuthorizedClientServiceOAuth2 소셜 로그인을 진행하는 사용자에 대해 우리의 서버는 인증 서버에서 발급 받은 Access 토큰과 같은 정보를 담을 저장소가 필요하다. 기본적으로 인메모리 방식으로 관리되는데 소셜 로그인 사용자 수가 증가하고 서버의 스케일 아웃 문제로 인해 인메모리 방식은 실무에서 사용하지 않는다. 따라서 DB에 해당 정보를 저장하기 위해서는 OAuth2AuthorizedClientService를 직접 작성해야 한다.JDBC 의존성 추가JDBC 방식을 지원하기 때문에 JDBC 모듈이 필요하고 JPA를 사용하고 싶은 경우 전부 커스텀해서 만들어야 한다. build.gradledependencies { implementation 'org.springfram..
스프링 OAuth2 클라이언트 세션 14 : OAuth2LoginAuthenticationFilter
·
Spring Security/OAuth2
로그인 성공 redirect_uri 필터 : /login/oauth2/code/서비스명 OAuth2LoginAuthenticationFilter는 인증 서버에서 로그인을 성공한 뒤 우리 서버측으로 발급되는 CODE를 획득하고, CODE를 통해 Access 토큰과 User 정보를 획득하는 OAuth2LoginAuthenticationProvider를 호출하는 일련의 과정을 시작하는 필터이다. OAuth2LoginAuthenticationFilterOAuth2LoginAuthenticationFilter는 /login/oauth2/code/서비스명 경로에 대해서 CODE를 받는 필터이다.이후 검증을 진행하고 완료되면 OAuth2LoginAuthenticationProvide를 호출한다.public class..
스프링 OAuth2 클라이언트 세션 13 : OAuth2AuthorizationRequestRedirectFilter
·
Spring Security/OAuth2
로그인 페이지에서 : /oauth2/authorization/서비스로그인 페이지에서 GET : /oauth2/authorization/서비스 경로로 요청을 할 경우 OAuth2 의존성에 의해 OAuth2AuthorizationRequestRedirectFilter에서 해당 요청을 받고 내부 프로세서를 진행한다. OAuth2AuthorizationRequestRedirectFilter는 요청을 받은 후 해당하는 서비스의 로그인 URI로 요청을 리디렉션 시킨다. (이때 서비스의 정보는 지난 번에 등록한 ClientRegistrationRepository에서 가져온다.)OAuth2AuthorizationRequestRedirectFilterOAuth2AuthorizationRequestRedirectFilte..
스프링 OAuth2 클라이언트 세션 12 : ClientRegistration
·
Spring Security/OAuth2
자료ClientRegistrationhttps://docs.spring.io/spring-security/site/docs/current/api/org/springframework/security/oauth2/client/registration/ClientRegistration.htmlClientRegistrationRepositoryhttps://docs.spring.io/spring-security/site/docs/current/api/org/springframework/security/oauth2/client/registration/ClientRegistrationRepository.htmlOAuth2 서비스 변수 등록 방법기존에 application.properties 변수 설정 파일에서 설정했..