본문 바로가기

전체 글

(42)
[Spring Boot] Redis 설명 및 예제 개요Redis는 키-값 구조의 데이터 저장소로, 데이터의 빠른 액세스가 필요한 애플리케이션에서 주로 사용됩니다. Spring Boot에서는 Redis를 손쉽게 통합하여 캐시, 세션 관리, 실시간 데이터 처리를 구현할 수 있습니다. 오픈 소스, 인메모리 데이터 저장소로, 주로 캐싱, 세션 저장소, 메시지 브로커로 사용됩니다. 모든 데이터를 메모리에 저장하므로 매우 빠른 속도로 데이터를 읽고 쓸 수 있으며, 다양한 데이터 구조(리스트, 셋, 해시 등)를 지원합니다. 주요 특징:인메모리 데이터베이스: 데이터가 메모리에 저장되어 초고속 접근이 가능합니다.다양한 데이터 구조 지원: 단순한 키-값뿐만 아니라, 리스트, 셋, 해시, 정렬된 셋 등 다양한 구조를 지원합니다.영속성 옵션: 데이터의 영속성을 위해 디스크에..
CSRF (Cross-Site Request Forgery) 간단 설명 개요CSRF(크로스 사이트 요청 위조, Cross-Site Request Forgery)는 웹 애플리케이션의 취약점을 이용해 사용자가 의도하지 않은 요청을 실행하게 하는 공격 방식입니다. 사용자가 신뢰하는 웹 사이트에 인증된 상태에서 공격자가 악의적인 요청을 하도록 유도해 사용자의 권한으로 특정 작업을 실행시키는 것이 핵심입니다. CSRF 공격 예시사용자가 A 사이트에 로그인하고 세션을 유지한 채로 웹 브라우저를 사용 중입니다.공격자는 사용자를 속여서 악성 코드가 포함된 B 사이트로 이동하게 합니다.B 사이트는 사용자가 A 사이트에서 인증된 상태임을 이용해, 사용자 몰래 A 사이트로 악의적인 요청을 보냅니다. 예를 들어, 사용자의 권한으로 계좌이체, 비밀번호 변경 등 중요한 작업을 수행할 수 있습니다.A..
[Spring Boot] Spring JPA Entity 연관관계 및 즉시로딩, 지연로딩 Spring JPA Entity 연관관계 및 즉시로딩, 지연로딩개요Spring Data JPA는 엔티티 간의 연관관계를 설정하고 관리하는 강력한 기능을 제공합니다. 엔티티 간의 연관관계는 데이터베이스의 테이블 간의 관계와 유사합니다. JPA에서는 엔티티 간의 관계를 맵핑하고, 데이터 로딩 방식을 제어할 수 있는 다양한 옵션을 제공합니다. 이 글에서는 JPA의 엔티티 연관관계와 즉시로딩(Eager Loading), 지연로딩(Lazy Loading)에 대해 자세히 설명하겠습니다.목차엔티티 연관관계 개념연관관계 유형연관관계 매핑 예제즉시로딩과 지연로딩로딩 전략 선택 시 고려사항예제 코드요약 1. 엔티티 연관관계 개념 엔티티 연관관계는 데이터베이스 테이블 간의 관계를 엔티티 객체 간의 관계로 매핑한 것입니다. ..
[Typescript] tsyringe: JavaScript/TypeScript 의존성 주입 라이브러리 개요tsyringe는 TypeScript와 JavaScript에서 의존성 주입(Dependency Injection)을 가능하게 하는 경량 라이브러리입니다. 의존성 주입은 객체 간의 결합도를 낮추고, 테스트 가능성을 높이며, 코드의 유지 보수를 쉽게 하는 데 유용합니다.   1. 의존성 주입의 개념의존성 주입은 객체가 직접 의존성을 생성하지 않고, 외부에서 제공받는 디자인 패턴입니다. 이를 통해 객체 간의 결합도를 낮추고, 모듈화와 테스트 가능성을 높일 수 있습니다. 2. tsyringe 설치tsyringe를 설치하려면 npm 또는 yarn을 사용할 수 있습니다.npm install tsyringe reflect-metadata또는yarn add tsyringe reflect-metadata reflec..
[Javascript] Axios Interceptors 개념과 사용법 개요Axios는 Promise 기반의 HTTP 클라이언트로, 브라우저와 Node.js에서 모두 사용할 수 있습니다. Axios는 요청(Request)과 응답(Response)을 가로챌 수 있는 인터셉터(Interceptors) 기능을 제공합니다. 인터셉터를 사용하면 요청이나 응답을 변경하거나, 요청 전후에 추가 작업을 수행할 수 있습니다. 1. Interceptors의 개념인터셉터는 Axios 요청이나 응답을 가로채고, 해당 요청 또는 응답을 처리하는 코드 조각을 추가할 수 있게 해줍니다. 이 기능은 인증 토큰을 자동으로 첨부하거나, 모든 응답을 로깅하는 등 여러 가지 용도로 사용할 수 있습니다. 2. Interceptors의 종류Request Interceptors: HTTP 요청을 서버로 보내기 전에..
[Javascript] async와 await의 개념과 사용법 개요JavaScript에서 비동기 작업을 다루는 방법 중 하나인 async와 await 키워드는 ES2017(ES8)에서 도입되었습니다. 이를 통해 비동기 코드를 더욱 직관적이고 읽기 쉽게 작성할 수 있습니다. async와 await은 Promise를 기반으로 동작하며, 코드의 흐름을 동기적인 방식으로 작성할 수 있게 해줍니다. 1. async 함수 async 키워드는 함수 앞에 사용되어 해당 함수를 비동기 함수로 만듭니다. 비동기 함수는 항상 Promise를 반환합니다. 명시적으로 Promise를 반환하지 않더라도 자동으로 Promise로 감싸집니다. 사용법async function myAsyncFunction() { return "Hello, async!";}myAsyncFunction().th..
[Spring Boot] 엔티티 관리와 영속성 컨텍스트: Spring Data JPA와 @Transactional 개요Spring Data JPA와 같은 ORM 프레임워크에서는 엔티티(Entity)를 관리하는 데 있어 영속성 컨텍스트(Persistence Context)가 중요한 역할을 합니다. @Transactional을 사용해왔지만 개념을 좀 더 잡기 위해 글을 작성하도록 했다.  영속성 컨텍스트란?영속성 컨텍스트는 엔티티의 상태를 관리하는 JPA의 메커니즘입니다. 이는 엔티티를 저장하고, 수정하고, 삭제하는 등의 작업을 수행할 때 JPA가 사용하는 가상의 데이터 저장소라고 할 수 있습니다. 영속성 컨텍스트는 엔티티 매니저(EntityManager)에 의해 관리됩니다.  영속성 컨텍스트의 주요 역할엔티티 저장: 데이터베이스에서 조회된 엔티티나 새로 생성된 엔티티를 영속성 컨텍스트에 저장.변경 추적: 영속성 컨텍스..
[JAVA] Abstract Class(추상 클래스)와 Interface (인터페이스) 추상 클래스 (Abstract Class)설명정의: 추상 클래스는 하나 이상의 추상 메서드를 포함하는 클래스입니다. 추상 메서드는 구현이 없는 메서드로, 서브클래스에서 반드시 구현해야 합니다.특징:인스턴스를 직접 생성할 수 없음.추상 메서드뿐만 아니라 구현된 메서드도 포함할 수 있음.상태(필드)와 구현(메서드)을 가질 수 있음.단일 상속만 가능.용도기본 구현 제공: 공통된 기능을 자식 클래스에 제공하면서, 일부 메서드는 자식 클래스에서 구현하도록 강제하고 싶을 때 사용.코드 재사용: 상속을 통해 코드 재사용을 목적으로 할 때 사용.예제// 추상 (부모) 클래스abstract class Animal { // 필드 private String name; // 생성자 public Anima..