본문 바로가기

전체 글

(50)
(MySQL) DELETE와 TRUNCATE 실무를 진행하다 보면 생각보다 delete와 truncate 명령어를 사용할 일이 그렇게 많지 않다. 그래서 종종 테이블의 모든 데이터를 지워야 하는 상황이 오면 delete 명령어를 사용할 지 truncate 명령어를 사용할 지 고민되는 경우가 있다. 아래에서는 두 가지 명령어의 동작 방식, 제약 조건, 성능 차이 등을 비교해보고, 실제 실무에서는 어떤 상황에서 어떤 명령어를 선택하는 게 더 적절한지에 대해 정리해보려 한다.   1. DELETE 명령어 DELETE는 DML(Data Manipulation Language) 명령어로 특정 조건에 맞는 행(row)을 삭제하거나 조건 없이 실행할 경우 테이블의 모든 행을 삭제할 수 있다.WHERE 절을 사용해 원하는 행만 삭제 가능트랜잭션 내에서 실행하면 ..
@RestController의 데이터 return 방식 Spring Boot 어플리케이션에서 @RestController를 이용해 클라이언트에게 데이터를 반환하는 방법은 다양하다.이번 글에서는 주요 응답 방식 4가지를 소개한다.  1. JSON 응답 (DTO 반환)가장 일반적인 REST API 응답 방식데이터를 구조화하기 위해 DTO(Data Transfer Object)를 사용함Spring Boot에서는 @RestController 어노테이션을 적용하면 Return 객체(DTO)를 Jackson 라이브러리가 JSON 형식으로 직렬화한다.JSON 응답 방식은 클라이언트가 응답 데이터를 쉽게 파싱할 수 있도록 도와주며, 계층화된 구조를 표현하기에 용이함@RestController@RequestMapping("/api")public class JsonRespon..
스위치와 라우터 LAN(Local Area Network – 근거리 통신망) 이란     LAN은 일반적으로 하나의 건물, 사무실, 학교, 또는 가정과 같은 제한된 물리적 범위 내의 장치들을 연결하는 네트워크를 의미한다. 홈 Wi-Fi 네트워크는 컴퓨터, 스마트폰, 프린터 등의 장치가 서로 연결된 LAN의 대표적인 예시이다.  WAN(Wide Area Network – 광역 통신망) 이란      WAN은 먼 거리에 있는 컴퓨터 그룹을 연결하는 네트워크를 의미한다. 즉, 서로 멀리 떨어져 있는 LAN을 연결할 수 있는 네트워크가 바로 WAN이다. 이러한 WAN의 구성 요소에 대한 정의는 상당히 광범위하다. 기술적으로는 넓은 지리적 영역에 걸쳐 분산된 모든 대규모 네트워크가 WAN이기 때문에 인터넷 자체도 WAN으로 간주..
정규화(Normalization) 정규화 란 정규화는 데이터베이스 설계 과정에서 데이터를 효율적으로 저장하고 중복을 최소화하며 데이터 일관성과 무결성을 유지하기 위한 기법을 의미한다. 정규화의 주요 목적은 다음과 같다.중복 데이터 제거- 동일한 데이터가 여러 위치에 저장되지 않도록 데이터 구조를 설계한다.데이터 무결성 보장- 데이터의 불일치나 오류를 방지하기 위해 종속성 있는 데이터를 올바르게 분리한다.이상 현상 해결- 이상 현상을 최소화하여 데이터베이스 관리가 용이하도록 한다.이상(Abnomal) 현상의 개념 및 종류 데이터베이스 설계에서 이상 현상은 데이터 삽입, 삭제, 또는 업데이트 시 발생하는 비정상적인 동작이나 문제를 의미한다. 이러한 이상 현상은 테이블 설계가 비효율적이거나 정규화가 제대로 이루어지지 않았을 때 발생할 수 있다..
메시지 지향 미들웨어, 메시지 브로커, 메시지 큐 메시지 지향 미들웨어(Message-Oriented Middleware – MOM) MOM이란 응용 소프트웨어 간에 비동기적 데이터 통신을 위한 소프트웨어를 의미한다. 보다 쉽게 말하자면 MOM이란 독립된 서비스들이 서로 데이터를 주고받을 수 있도록 하는 미들웨어를 의미한다.미들웨어란 서로 다른 어플리케이션들을 연결하여 데이터 교환을 가능하게 해주는 소프트웨어이다. 메세지 지향 시스템은 메세지 API를 통해 분산된 어플리케이션간의 중개 역할을 수행하여 데이터가 안전하고 신뢰성 있게 교환될 수 있도록 지원한다. MOM은 메세지를 통해 여러 분산된 시스템간의 Connector 역할을 하며 시스템 간의 결합성을 낮추고 실시간으로 비동기식 데이터 교환을 가능하게 한다.    주문, 결제, 배송, 재고 관리 등 ..
Scope와 Closure 이번 포스트를 보기 앞서 이전 포스트를 보고 오시기 바랍니다. https://jaystorage.tistory.com/46 Execution Context(실행 컨텍스트)Lexical Environment(어휘적 환경) 란코드가 어디서 실행되며 주변에 어떤 코드가 있는지 대체적인 정보를 담고 있는 환경함수 본인 내부의 식별자, 식별자에 바인딩 된 값 등을 기록하고 있는 하나의jaystorage.tistory.com  Scope 란 스코프란 변수 이름, 함수 이름, 클래스 이름과 같은 식별자가 본인이 선언된 위치에 따라 다른 코드에서 자신이 참조될 수 있을지 없을지 결정되는 것을 의미한다. 보다 간단하게 설명하면 스코프는 식별자가 유효한 범위라고 할 수 있다. 스코프는 유효범위에 따라 다음과 같이 2가지로..
Execution Context(실행 컨텍스트) Lexical Environment(어휘적 환경) 란코드가 어디서 실행되며 주변에 어떤 코드가 있는지 대체적인 정보를 담고 있는 환경함수 본인 내부의 식별자, 식별자에 바인딩 된 값 등을 기록하고 있는 하나의 자료구조 이러한 Lexical Environment가 모여서 코드의 문맥을 구성한다.  Lexical Environment의 구성 요소Environment Record (환경 레코드)- 변수와 함수 선언을 저장 - ex) 함수 내부의 변수와 함수 선언이 저장Outer Environment Reference (외부 환경 참조)- 상위 lexical environment 가리킴- 이를 통해 함수가 중첩되어 있을 때 내부 함수가 외부 함수의 변수와 함수에 접근 가능  Execution Context(실행..
Spring IoC Container(Spring Container) Spring IoC Container(Spring Container) 란 Spring IoC Container(혹은 Spring Container)란 객체의 생명주기를 관리하며 이러한 객체들에게 추가적인 기능을 제공하는 스프링의 핵심 컴포넌트이다. 즉, 스프링의 bean을 관리(bean 생성 및 생명주기 관리, DI, AOP 지원 등)하는 컨테이너라고 보면 된다. 이러한 스프링 컨테이너는 XML 파일 또는 어노테이션 기반의 자바 설정 클래스로 구현할 수 있다. 예전에는 xml 파일을 통해 직접적으로 스프링 컨테이너를 설정하는 것이 일반적이었지만, Spring Boot가 등장하고 설정이 자동화되어 대부분 사용하지 않게 되었다. Spring IoC Container(Spring Container) 구성  스..