본문 바로가기

분류 전체보기52

Entity, DTO, VO 무슨 차이점을 가지고있을까? 최근 프로젝트 세팅을 하며, 아키텍처를 어떻게 구성하고 계층간의 역할을 분리하여 진행해볼까 고민을 하면서Entity, DTO, VO 등의 개념들에 대해서 확실하게 이해를 해놔야겠다 싶어서 이번 포스팅을 작성하게 되었습니다.이것들은 무엇이고 차이점은 무엇인지 알아봅시다. EntityEntity는 실제 DB 테이블과 1:1로 매핑되는 클래스이며 테이블내에 존재하는 컬럼만을 필드로 지정해야한다.객체의 불변성을 보장해야 하므로 setter 메서드를 지양하고 생성자 또는 Builder 패턴을 사용하는 것이 일반적이다. Entity는 조심히 다뤄야하며, 요청 그리고 응답 값을 전달하는 역할을 수행해서는 안된다.그 이유는 Entity는 실제 DB 테이블과 매핑 되어 중요한 정보가 응답 값으로 유출된다면 보안상 치명적.. 2025. 5. 11.
[Java] 싱글톤 패턴(Singleton Pattern) 개념 및 사용 방법 싱글톤 패턴(Singleton Pattern)싱글톤 패턴은 특정 클래스가 단 하나만의 인스턴스를 생성하고, 그 인스턴스에 접근 할 수 있는 전역적인 접근 방법을 제공하는 디자인 패턴 입니다.생성자를 여러번 호출 하더라도 하나의 인스턴스만 존재하도록 보장하며 어플리케이션에서 동일한 인스턴스에 접근하도록 합니다. 싱글톤 패턴을 사용하는 이유 [예시 1] 1. 1대의 정수기를 여러 사람이 공유하며 함께 사용한다.2. 여러대의 정수기를 여러 사람이 각각 사용한다. 이 2가지의 상황에서의 일반적인 경우는 1대의 정수기를 여러 사람이 공유해서 사용하는 것이 일반적인 사용 방법이라고 할 수 있겠죠?일반적으로 사무실에는 1대의 정수기만 존재 할 것이므로, 2번째 방법은 비효율적이며 불가능한 방법 일지도 모릅니다. 시스.. 2025. 4. 6.
[Javascript] 자바스크립트 var / let / const 정리 자바스크립트에서 변수 선언할 때 var, let, const 이 세 가지 중 하나를 쓰게 된다.각 변수마다 어떤 특징이 있는지 알아보자. var 란?var의 특징으로는 중복 선언이 가능하다 / 언제든 값을 바꿀 수 있다.var로 변수를 선언하면 너무 자유롭다 보니 실수로 변수 덮어쓰기 생기면 디버깅이 힘들어 지는 단점이 있다.이를 보완하기 위해 ES6 부터 추가된 변수선언 방식이 let 과 const 이다.// 1. var 선언 방식var fruit = 'apple';console.log(fruit); // applevar fruit = 'banana';console.log(fruit); // bananafruit = 'cherry';console.log(fruit); // cherry// 2. var .. 2025. 4. 4.
[DB] Postgresql 14 간단 설치 및 DBeaver에서 데이터베이스 생성(macOS) macOS에서 Postgresql 14버전을 설치하고 DBeaver에서 데이터베이스 생성 및 연결하는 과정을 정리 해보겠습니다. 만약 Homebrew를 설치 하지 않으셨다면 아래 블로그를 참고하셔서 Homebrew를 설치해주세요. 맥북 Homebrew 홈브류 설치하기Homebrew 홈브류란? 오픈소스 기반의 Mac OS용 패키지 매니저입니다. 패키지 매니저란 컴퓨터 프로그램의 설치, 업그레이드, 구성, 제거 과정을 자동화하는 소프트웨어 도구들의 모임을 의미합니다.m-ur-phy.tistory.com Homebrew를 설치하셨다면 과정은 매우 간단합니다. 아래의 작업은 Terminal에서 진행해주시면 됩니다.Postgresql 설치과정1. Homebrew 버전 확인2. Postgresql 설치3. Post.. 2025. 4. 1.
[Javascript] 자바스크립트 Class / Getter&Setter / Extends 정리 Class(클래스)란?클래스는 객체를 만들기 위한 틀(설계도)이다.즉, 공통된 특징을 가진 객체들을 효율적으로 만들기 위해 사용한다. 붕어빵 틀 = 클래스 (공통된 구조)붕어빵 = 객체(인스턴스) (틀을 이용해 찍어낸 실체) 예를 들어, 클래스를 사용해서 사람(Person)을 표현해보자class Person { constructor(name, age) { this.name = name; this.age = age; } speak() { console.log(`${this.name} says hello!`); }}const person1 = new Person("Kim", 20);const person2 = new Person("Lee", 30);person1.speak(); // .. 2025. 3. 30.
[메시지 큐] RabbitMq에 대해 RabbitMq란?RabbitMQ는 오픈 소스 메시지 브로커로, 메시지 송수신을 관리해 주는 역할을 합니다.AMQP를 사용하여 안정적이고 확장 가능한 메시징 서비스를 제공합니다.RabbitMQ는 메시지 큐를 사용하여 시스템 간의 비동기 처리를 가능하게 하며, 데이터 손실에 대해 안정성을 보장합니다. RabbitMq 주요 개념위의 사진과 같은 과정을 요약하자면Publisher가 Exchange에 메시지를 발행 -> Exchange가 메시지를 적절한 Queue(큐)로 라우팅 -> 라우팅된 메시지를 Queue(큐)에 저장됨 -> Consumer(소비자)가 메시지를 읽어 처리 1. Publisher(생산자)메시지를 생성하고 RabbitMq에 전달하는 역할을 한다..특정 작업의 데이터를 포함한 메시지를 생성하고 .. 2025. 2. 1.