IT 21

DTO와 Entity, VO의 차이점, 개념, 그리고 분리의 목적

데이터베이스와 연동되는 애플리케이션을 개발할 때 Entity와 DTO는 필수적으로 등장하는 개념입니다. 이 외에도 자주 사용되는 VO(Value Object)와 Java의 record를 함께 알아보겠습니다. 이번 글에서는 이들 객체의 개념, 차이점, 그리고 분리해야 하는 이유를 쉽게 설명해보겠습니다.1. Entity란?Entity는 데이터베이스 테이블과 1:1로 매핑되는 클래스입니다. 데이터베이스의 한 행(row)을 의미하며, JPA와 같은 ORM(Object-Relational Mapping) 프레임워크를 통해 데이터베이스와 연결됩니다. 주로 비즈니스 로직을 포함할 수 있으며, 데이터베이스의 상태를 반영하는 역할을 합니다//예시 코드@Entitypublic class User { @Id @G..

IT 2024.11.16

Java 오버로딩(Overloading)과 오버라이딩(Overriding)???

자바(Java)를 학습하다 보면 자주 등장하는 개념 중 하나가 오버로딩(Overloading)과 오버라이딩(Overriding)입니다. 이 두 개념은 비슷해 보이지만 완전히 다른 목적을 가지고 있습니다. 이번 글에서는 오버로딩과 오버라이딩의 개념과 차이를 간단한 예제와 함께 알아보겠습니다.1. 오버로딩(Overloading) - 같은 이름, 다른 매개변수오버로딩(Overloading)은 같은 이름의 메서드를 다른 매개변수를 사용하여 정의하는 것을 의미합니다. 메서드 이름은 같지만, 매개변수의 개수나 타입이 다르다면 오버로딩이 가능합니다.public class Calculator { // 두 정수를 더하는 메서드 public int add(int a, int b) { return a..

IT 2024.11.15

자바에서 변수,메소드 이름 쉽게 짓기!

자 변수명과 메소드명은 그냥 단순하게 x,y,temp 편하신걸로 단순하게 작성하십쇼!! 라고 하면... 안되겠죠...우리는 꽤나 많은 시간을 이름을 작성하는데 소비합니다. (아무래도 영어권의 나라가 아닌 이상 쉽게 떠오르지 않나봅니다.) 그래서 오늘은 변수명 또는 메소드명과 같은 이름을 쉽게 작성하는 컨벤션과 팁을 알려드리려고 합니다. 자바 변수명 및 네이밍 컨벤션 소개우선, 변수명을 포함한 네이밍 컨벤션은 코드의 가독성을 높이고 협업에 필요한 일관성을 유지하는 중요한 원칙입니다. 특히 자바는 객체 지향 언어로, 변수, 메소드, 클래스명 등 각 요소에 맞는 이름을 작성하는 것이 더욱 중요합니다. 자바에서 따를 수 있는 대표적인 네이밍 컨벤션을 알아봅시다.1. 자바 네이밍 컨벤션의 기본 원칙패키지명모두 소..

IT 2024.11.15

AngularJS Git Commit Message Convention이란?

코드베이스가 커지면서 팀 프로젝트에서 커밋 메시지의 중요성은 점점 커집니다. 커밋 메시지가 잘 작성되어 있으면 코드 히스토리를 추적하기 쉬워지고, 변경 사항을 쉽게 이해할 수 있습니다. 이번 글에서는 AngularJS Git Commit Message Convention을 사용하여 효율적이고 일관된 커밋 메시지를 작성하는 방법을 알아보겠습니다.1. 커밋 메시지 구조AngularJS의 커밋 메시지 컨벤션은 아래와 같은 구조로 작성됩니다:():  type: 커밋의 목적을 나타냅니다.scope: 선택 항목으로, 변경 사항의 영향을 받는 모듈이나 파일을 지정합니다.subject: 변경 사항에 대한 간략한 설명으로, 소문자로 시작하고 마침표를 생략합니다.feat(auth): 로그인 기능 추가 2. Type (커밋..

IT 2024.11.15

배포 중에도 서비스 중단 없이! - 무중단 배포 전략 알아보기

들어가며웹사이트나 애플리케이션을 운영하다 보면, 새 버전을 배포할 때 서비스가 멈출까 걱정되죠? 실제로는 배포 중에도 서비스가 멈추지 않도록 무중단 배포 전략을 사용한다고 합니다. 이 글에서는 주로 사용하는 무중단 배포 방법과 그 예시를 알아보겠습니다.무중단 배포란?무중단 배포(Zero-Downtime Deployment)는 서비스가 중단되지 않도록 하면서 업데이트하는 방법입니다. 예를 들어, 우리 앱에 새 기능이나 버그 수정을 배포하면서 사용자는 계속 정상적으로 서비스를 사용할 수 있어야 합니다. 무중단 배포의 대표적인 방법들무중단 배포는 여러 가지 방식으로 구현할 수 있습니다. 그중 많이 쓰이는 블루-그린 배포와 카나리 배포, 롤링 배포를 살펴보겠습니다. 1. 블루-그린 배포 (Blue-Green D..

IT 2024.11.13

상태 없는 객체와 static 메서드 활용법

시작하며: "이 객체는 상태가 없는데, static 메서드로 만들면 좋을까요?"프로그래밍을 하다 보면 "이 객체는 내부에 상태가 없는데, 굳이 인스턴스를 만들어 사용할 필요가 있을까? static으로 만들어도 되는 거 아닐까?"라는 질문이 생길 수 있습니다. 이 글은 제가 코드를 작성하거나 공부를 할 때 고민한 내용들을 바탕으로 객체의 상태와 static 메서드에 대한 기본 개념을 쉽게 설명하려고 합니다. 객체란? 객체는 상태와 행동을 가진다객체지향 프로그래밍에서 객체는 보통 내부에 상태(데이터)를 가지고 있고, 이 상태에 따라 다르게 행동하는 메서드를 가집니다. 즉, 객체는 상태와 행동을 한 단위로 묶어주는 역할을 합니다. 예를 들어 볼까요?Java에서 메서드는 클래스의 상태(예: 객체가 가지고 있는 ..

IT 2024.11.13

Light house 그리고 웹사이트 품질 테스트?

웹 개발을 하다 보면 성능, 접근성, SEO, 그리고 웹 표준 준수가 얼마나 중요한지 실감하게 됩니다. 하지만 이를 일일이 확인하고 분석하는 일은 어렵고 시간이 많이 소요될 수 있습니다. 이런 상황에서 Google의 Lighthouse라는 도구가 큰 도움이 됩니다. 오늘은 제가 직접 사이트를 배포를 한 뒤에 겪은 경험을 바탕으로 Lighthouse에 대해 쉽게 설명해보겠습니다. Lighthouse란?Lighthouse는 Google이 제공하는 오픈 소스 자동화 도구로, 웹 페이지의 성능, 접근성, SEO 등 다양한 품질 지표를 분석해줍니다. 이 도구는 웹 개발자가 웹사이트의 상태를 파악하고 개선점을 찾는 데 큰 도움을 줍니다. 저도 처음 어찌어찌 배포를 했지만 배포한 페이지에 대한 성능이 괜찮은지 궁금하..

IT 2024.11.12

@Builder, 빌더

Java에서 객체를 생성할 때, 생성자의 매개변수가 많거나 특정 필드만 선택적으로 초기화해야 하는 경우가 있습니다. 이런 상황에서는 빌더 패턴을 활용하면 코드의 가독성과 유지보수성을 높일 수 있습니다. 이번 글에서는 Lombok을 사용하지 않고 직접 빌더 패턴을 구현하는 방법을 알아보겠습니다.1. 빌더 패턴이란?빌더 패턴은 객체 생성 시점에 복잡한 생성자 호출을 피하고, 가독성과 유연성을 높이기 위해 사용하는 생성 패턴입니다. 이를 통해 객체 생성 코드가 명확해지고, 선택적 필드만 설정할 수 있는 장점이 있습니다.2. 빌더 패턴의 필요성매개변수 순서 문제 해결: 생성자에 많은 매개변수가 있을 때, 매개변수의 순서를 헷갈릴 위험이 있습니다.가독성: 메서드 체이닝 방식으로 필드를 설정하기 때문에 코드를 읽고..

IT 2024.11.11

Implements vs extends

Java의 implements와 extends 차이점과 사용법Java를 처음 학습하다 보면 implements와 extends 키워드를 자주 마주하게 됩니다. 이 두 키워드는 클래스와 인터페이스를 활용할 때 중요한 개념으로, 서로 다른 상황에서 사용됩니다. 이번 글에서는 implements와 extends의 차이점과 사용법에 대해 자세히 설명해드리겠습니다.1. extends 키워드란?extends 키워드는 클래스가 다른 클래스를 상속할 때 사용됩니다. 이를 통해 부모 클래스의 필드와 메서드를 자식 클래스에서 상속받아 사용할 수 있습니다. 상속을 사용하면 코드의 재사용성이 높아지고, 객체 지향 프로그래밍의 중요한 개념인 다형성을 구현할 수 있습니다.사용법class Parent { void parent..

IT 2024.11.10

CI/CD란?

CI/CD란 무엇인가?CI/CD는 Continuous Integration (지속적 통합)과 Continuous Deployment/Delivery (지속적 배포/전달)의 약어로, 소프트웨어 개발 및 배포 프로세스를 자동화하여 소프트웨어의 품질을 높이고 출시 주기를 단축하는 것을 목표로 하는 DevOps의 핵심 요소입니다.CI (지속적 통합): 개발자들이 개별적으로 작업한 코드를 정기적으로 중앙 저장소에 통합하는 과정을 말합니다. 각 통합 시 자동화된 테스트가 실행되어 코드의 품질을 보장하고 문제를 신속히 발견할 수 있습니다.CD (지속적 배포/전달): 지속적 전달(Continuous Delivery)은 CI 이후의 자동화된 검증 절차를 통해 제품이 배포 가능한 상태로 유지되도록 하는 것입니다. 지속적 ..

IT 2024.11.09