본문 바로가기
반응형

전체 글14

CHAR vs VARCHAR 차이점 정리 SQL Server에서 테이블을 설계할 때, 데이터 타입을 신중하게 설정하는 것이 얼마나 중요한지 직접 체감한 경험이 있어 이를 공유해 봅니다.최근 제가 생성한 테이블에서 이상한 현상이 하나 발생했습니다.Code라는 컬럼에 "00001" 값을 넣었는데, 값을 조회하면 "00001 "처럼 뒤에 공백이 붙어 나타나는 것이었습니다. 문제 상황CREATE TABLE SampleTable ( Code CHAR(8), ...); 위와 같이 Code 컬럼을 CHAR(8)로 정의한 상태에서 "00001" 값을 입력하면, 조회 시 아래처럼 출력됩니다.00001 총 8자리 중 나머지 3자리를 공백으로 채워 보여주고 있었던 거죠. 원인 분석문제의 원인은 바로 CHAR 타입의 고정 길이 특성에 있습니다.CHAR(n).. 2025. 5. 16.
@ParameterObject vs @RequestBody 차이점 정리 스프링(Spring)에서 백엔드 API를 개발할 때, 프론트엔드(Angular)와 통신하는 방식에 따라 데이터를 받는 방법이 달라집니다. 특히 파일 업로드, 복잡한 객체 전달처럼 POST, PUT 요청이 필요한 경우에는 @RequestBody를 써야 하고, 단순 필터링/쿼리 조회 같은 GET 요청에서는 @ParameterObject를 사용하는 게 적절합니다.최근 제가 겪은 실제 문제를 예시로 사용하면서 개념을 함께 정리해보겠습니다.문제 상황: @ParameterObject로는 파일을 받을 수 없었던 이유상황 설명Angular에서 POST 방식으로 서버에 데이터를 보낼 때, JSON 객체 안에 파일 리스트(FileList)를 함께 전송했습니다.const formData = new FormData();for.. 2025. 5. 16.
[Angular] 함수 바인딩(this) Angular 프로젝트를 진행하면서, 그리드 컴포넌트에서 데이터를 추가하는 기능을 구현하던 중 예상치 못한 오류가 발생했습니다.편집 버튼을 누르고 "추가(Add)" 를 실행했을 때, 내부 로직에서 this.user 값을 참조하지 못하는 문제가 있었습니다. 분명 this.user는 정상적으로 초기화되어 있었고, 다른 메서드에서는 문제 없이 동작했기 때문에 더 헤맸습니다. 문제는 바로 함수 바인딩이 누락되어 this 컨텍스트가 엉켜버린 상태였습니다. 문제 상황 요약위 코드에서 addDataFunc는 부모 컴포넌트의 메서드이며, 그리드에서 클릭 시 호출됩니다.그러나 내부에서 this.user에 접근하려고 하면 undefined 오류가 발생했습니다. 원인 분석: this 바인딩 누락JavaScript에서 함수는.. 2025. 5. 14.
Java에서 String vs StringBuilder vs StringBuffer – 언제 어떤 걸 써야 할까? Java 개발을 하다 보면 문자열을 다루는 일이 많습니다. 이때 가장 흔히 사용하는 클래스가 String, StringBuilder, StringBuffer인데요. 이 세 가지는 각각 특징과 사용 목적이 다르기 때문에 잘 이해하고 사용하는 것이 중요합니다.이번 글에서는 이 세 가지 클래스의 차이점과 실제 사용 시 주의할 점을 정리해보겠습니다. 1. String – 불변(Immutable) 객체Java의 String 클래스는 불변 객체(immutable)입니다. 즉, 문자열을 수정하는 것처럼 보이지만 실제로는 새로운 String 객체가 생성됩니다.String str = "hello";str += " world"; // 새로운 String 객체가 만들어짐 위 코드는 내부적으로 "hello"와 " world".. 2025. 5. 14.
Angular ViewEncapsulation(뷰 캡슐화) 완벽 정리 – Emulated, ShadowDom, None 차이와 실무 팁 Angular(앵귤러)는 컴포넌트 단위로 화면을 구성합니다. 각 컴포넌트는 HTML, CSS, TypeScript로 분리되어 유지보수에 용이하지만, CSS는 본질적으로 전역 범위로 작동하기 때문에 스타일 충돌이 쉽게 발생할 수 있습니다.이 문제를 해결하기 위해 Angular에서는 ViewEncapsulation(뷰 캡슐화) 기능을 제공합니다. 이 글에서는 Angular의 뷰 캡슐화가 무엇인지, 어떤 방식이 있는지, 각각 어떤 상황에 적합한지 실무 관점에서 자세히 설명합니다. ViewEncapsulation이란?ViewEncapsulation은 컴포넌트에서 작성한 CSS가 외부로 새어나가지 않도록, 스타일의 적용 범위를 제한하는 방법입니다. 즉, 컴포넌트 단위로 스타일을 캡슐화하여 유지보수성과 예측 가능성.. 2025. 5. 12.
순환참조(Circular Reference)란? 개념부터 해결 방법까지 개발을 하다 보면 “순환참조”라는 용어를 자주 접하게 됩니다. 특히 Spring Framework, NestJS 같은 의존성 주입(DI) 기반 프레임워크를 사용할 때 종종 순환참조 오류로 애플리케이션이 실행되지 않거나, 직렬화 에러가 발생하기도 하죠.이번 글에서는 순환참조의 개념과 발생 원인, 위험성 그리고 실무에서 어떻게 해결할 수 있는지까지 정리해보겠습니다.순환참조란?순환참조(Circular Reference)는 두 개 이상의 객체나 모듈이 서로를 참조하면서 순환 구조를 이루는 것을 말합니다. 예를 들어 클래스 A가 클래스 B를 참조하고, 클래스 B가 다시 A를 참조하는 구조라면 이것이 순환참조입니다.class A { B b; public A(B b) { this.b = b; .. 2025. 5. 12.
반응형