본문 바로가기

분류 전체보기

(285)
@Transactional @Transactional은 자바에서 스프링 프레임워크에서 제공하는 어노테이션 중 하나입니다. 이 어노테이션은 메서드 또는 클래스에 적용될 수 있습니다. 이 어노테이션을 사용하면 해당 메서드나 클래스의 실행이 트랜잭션 내에서 처리됨을 나타냅니다. @Transactional 어노테이션을 사용하면 스프링이 트랜잭션을 관리하고, 설정된 트랜잭션 속성에 따라 메서드가 실행됩니다. 이를 통해 개발자는 트랜잭션 처리를 명시적으로 관리할 필요가 없으며, 트랜잭션의 관리와 제어를 스프링에 위임할 수 있습니다. 일반적으로 @Transactional 어노테이션은 다음과 같은 속성을 가질 수 있습니다: readOnly: 트랜잭션이 읽기 전용인지 여부를 나타냅니다. 읽기 전용 트랜잭션은 데이터베이스에 쓰기 작업이 없음을 나타..
트랜젝션이란? 트랜잭션은 데이터베이스에서 하나 이상의 작업을 수행하는 논리적인 작업 단위를 의미합니다. 이러한 작업은 원자성(Atomicity), 일관성(Consistency), 고립성(Isolation), 지속성(Durability)의 네 가지 특성을 보장합니다. 원자성(Atomicity): 트랜잭션 내의 모든 작업은 전부 성공하거나 전부 실패해야 합니다. 즉, 모든 작업이 완료되어야 트랜잭션이 성공적으로 완료됩니다. 어느 하나라도 실패할 경우 이전의 작업들은 롤백되어야 합니다. 일관성(Consistency): 트랜잭션이 수행된 후에도 데이터베이스는 일관된 상태를 유지해야 합니다. 즉, 트랜잭션 이전과 이후에도 데이터베이스는 무결성 제약 조건을 준수해야 합니다. 고립성(Isolation): 하나의 트랜잭션이 실행 중..
stream이란. 자바 스트림은 자바 프로그래밍 언어에서 데이터를 다루는 유연하고 강력한 방법 중 하나입니다. 스트림은 컬렉션 요소, 배열 또는 I/O 자원과 같은 데이터 소스로부터 연속된 요소 시퀀스를 나타냅니다. 스트림은 한 번에 하나의 항목만 처리하며, 요소를 중간 단계에서 변환하고 최종 결과를 생성하는 파이프라인으로 구성됩니다. 스트림의 주요 특징은 다음과 같습니다: 컨슈머 기반 처리 (Consumer-Based Processing): 스트림은 요소를 처리하기 위해 함수형 인터페이스를 사용합니다. 이를 통해 간단하고 유연한 데이터 처리를 제공합니다. 지연 평가 (Lazy Evaluation): 스트림은 필요할 때까지 요소를 계산하지 않습니다. 이는 효율적인 리소스 사용을 가능하게 합니다. 병렬 처리 지원 (Para..
EC2 메모리 부족현상 스왑 메모리는 실제 메모리(RAM)가 가득 찼을 때, 더 많은 메모리가 필요한 경우 디스크 공간을 이용하여 부족한 메모리를 대체할 수 있는 공간을 말합니다. 이는 가상 메모리로써, 디스크 공간을 메모리처럼 사용하는 개념입니다. 스왑 메모리 설정을 위한 과정은 다음과 같습니다: 1️⃣ 스왑 파일 생성: dd 명령을 사용하여 루트 파일 시스템에 스왑 파일을 생성합니다. 이때 bs는 블록 크기를 나타내며, count는 블록 수입니다. 스왑 파일의 크기는 bs와 count를 곱한 값으로 결정됩니다. $ sudo dd if=/dev/zero of=/swapfile bs=128M count=32 2️⃣ 스왑 파일의 읽기 및 쓰기 권한 업데이트: $ sudo chmod 600 /swapfile 3️⃣ Linux 스왑..
QueryDSL product 조회 코드 구현(페이징 처리,카테고리처리, 조회 결과 정렬) QueryDSL 이란? 정적 타입을 이용하여, SQL과 같은 쿼리를 코드 형태로 생성할 수 있도록 해주는 오픈소스 빌더 API 즉, SQL문을 직접 하드코딩 하는 것이 아닌, 코드 형태로 작성하는 것이 특징이다. 이 컨트롤러는 다양한 REST API 엔드포인트를 정의하고, 상품 관련 요청을 처리하여 클라이언트에게 응답합니다. @RestController @RequiredArgsConstructor @RequestMapping("/api/v2/products") public class ProductController { private final ProductService productService; // 새 상품 생성 엔드포인트 @PostMapping public ResponseEntity createPr..
DTO의 필요성 데이터 전송의 표준화: DTO는 데이터 전송을 위한 표준화된 객체입니다. 이를 사용하면 데이터를 일관되게 전송할 수 있으며, 클라이언트와 서버 간의 통신을 단순화할 수 있습니다. 불필요한 데이터 제거: DTO를 사용하면 필요한 데이터만을 전송할 수 있습니다. 이는 네트워크 대역폭을 절약하고, 불필요한 데이터 처리를 방지하여 성능을 향상시킵니다. 객체 지향적 접근: DTO는 객체 지향적인 설계를 장려합니다. 데이터를 객체로 캡슐화함으로써 코드의 가독성과 유지보수성을 향상시킬 수 있습니다. 버전 관리와 호환성: DTO를 사용하면 API의 버전 관리와 호환성을 유지하기 쉽습니다. 새로운 필드를 추가하거나 기존 필드를 수정할 때에도 DTO를 업데이트하여 이전 버전과의 호환성을 보장할 수 있습니다. 보안 강화: ..
세션 기반 인증과 토큰 기반 인증의 차이에 대해 설명해주세요. 세션 기반 인증과 토큰 기반 인증은 웹 애플리케이션 및 API에서 사용되는 두 가지 주요한 인증 방식입니다. 각각의 특징을 살펴보겠습니다. 세션 기반 인증(Session-Based Authentication): 동작 방식: 사용자가 인증되면 서버 측에서 해당 사용자에 대한 세션을 생성하고, 이 세션 정보를 서버에 저장합니다. 클라이언트는 세션 식별자를 쿠키 또는 URL 매개변수와 같은 방법으로 전달하여 요청을 보냅니다. 장점: 보안: 세션 식별자는 클라이언트에 저장되지 않고, 서버 측에서만 관리되므로 보안이 높습니다. 로그인 유지: 사용자가 로그인 상태를 유지하는 동안 세션을 유지할 수 있으므로, 사용자 경험을 향상시킬 수 있습니다. 단점: 확장성 문제: 세션 정보를 서버에 저장하므로, 사용자 수가 많을..
AWS S3, EC2를 사용하는 이유와 사용 경험에 대해서 답변해주세요. AWS S3와 EC2를 사용하는 이유는 여러 가지가 있습니다. 먼저, 각각의 장점을 살펴보겠습니다. AWS S3 (Simple Storage Service): 무한한 확장성: 데이터 저장용으로 S3를 사용하면 데이터 용량을 쉽게 확장할 수 있습니다. 내구성과 가용성: AWS는 데이터를 여러 복제본으로 저장하여 내구성을 보장하며, S3는 99.999999999%의 데이터 내구성을 제공합니다. 다양한 용도: 정적 웹 호스팅, 백업 및 아카이빙, 미디어 및 파일 저장 등 다양한 용도로 활용할 수 있습니다. 비용 효율성: 데이터 전송, 저장 및 요금 청구 모델이 효율적이며, 필요한 만큼만 지불하면 됩니다. AWS EC2 (Elastic Compute Cloud): 확장성: 필요에 따라 가상 서버를 증가 또는 감..