특징 객체 지향적 언어: 모든 것을 객체로 표현하고, Object 클래스에서 모든 클래스가 파생된다. 플랫폼 독립적: 자바 가상 머신 (JVM) 위에서 동작하기 때문에 OS에 종속적이지 않다. 메모리 관리: Garbage Collector가 존재하기 때문에 개발자가 직
기본형 (Primitive)와 참조형 (Reference)로 구분된다. 기본형 | 자료형 | 크기 (byte) | 기본값 | 설명 | 예시 | | - | - | - | - | - | | byte | 1 | 0 | 정수형, -128~127 | byte b = 100; |
연산자 산술 연산자 +, -, *, /, %: 덧셈, 뺄셈, 곱셈, 나눗셈, 나머지 연산 비교 연산자 ==, !=, `, =`: 두 값의 크기나 동등성 비교 논리 연산자 &&, ||, !: AND, OR, NOT 대입 연산자 =, +=, -=, *=, /=, %=: 값
조건문 if, else if, else 조건에 따라 코드 블록을 선택적으로 실행한다. switch 여러 값 중 하나와 일치하는 분기를 선택하여 실행한다. 반복문 for 조건에 따라 정해진 횟수만큼 반복한다. for-each 배열이나 컬렉션의 모든 요소를 순서대로
절차적 프로그래밍 vs 객체 지향 프로그래밍 절차적 프로그래밍 (Procedural Programming)과 객체 지향 프로그래밍 (Object-Oriented Programming, OOP)은 소프트웨어 개발의 두 가지 대표적인 패러다임이다. | 구분 | 절차적 프
패키지 (Package) 관련 있는 클래스들을 논리적으로 묶는 단위. 일종의 폴더 구조이며, 클래스 간의 이름 충돌 방지, 접근 범위 관리, 재사용성 향상 등을 제공한다. package com.company.project.model.user와 같이 소스 코드 상단에 패
java.util 패키지는 Java에서 가장 자주 사용하는 유틸리티 클래스들이 모여 있는 핵심 패키지다. ArrayList 크기가 자동으로 조절되는 배열로 인덱스를 통해 순서대로 요소를 저장하고 접근하며, 중복 요소를 허용한다. 리스트의 크기가 가변적이므로, 배열처럼
제네릭 타입은 클래스, 인터페이스, 메서드에서 사용할 데이터 타입을 일반화하여 작성할 수 있는 문법이다. 컴파일 시 타입을 체크하고, 타입 캐스팅 없이 다양한 객체를 처리할 수 있어 안정성과 재사용성을 제공한다.제네릭 타입 매개 변수의 이름은 꼭 T일 필요는 없으나 관
람다 표현식은 익명 함수 (Anonymous function)를 작성하는 간결한 방식이다. 메서드 (함수)를 이름 없이 전달하거나, 일급 객체처럼 변수에 저장하거나, 메서드의 인자로 넘길 때 사용한다. 기본 형식은 아래와 같다.✏️ 일급 객체 (First-Class C
개요 메서드 체이닝 (Method Chaining)은 객체의 메서드 호출 결과로 다시 그 객체를 반환하여 연속적으로 메서드를 호출할 수 있게 하는 프로그래밍 기법이다.
개요 객체 생성 패턴 (Creational Patterns)는 객체의 생성 과정을 추상화하여, 시스템이 구체적인 클래스에 의존하지 않고 객체를 만들 수 있게 해주는 패턴이다. 종류 Singleton 시스템 전체에서 단 하나의 인스턴스만을 제공하며, 이를 어디서든 접근
개요 우지보수성과 확장성을 높이기 위한 5가지 설계 원칙으로, Clean Architecture의 핵심이다.
개요 Spring Bean의 생성, 설정, 관리, 소멸 등 라이프사이클 전반을 담당하는 핵심 엔진이다. 객체의 생성과 관리, 흐름의 제어권을 개발자가 아닌 프레임워크 (Spring의 IoC 컨테이너)에서 처리한다. > ✏️ IoC (Inversion of Contro
IoC (Inversion of Control, 제어의 역전) 객체의 생성, 생명주기 관리, 의존성 주입 등으 개발자가 직접하지 않고, 컨테이너가 대신 관리해주는 원리이다. 전통적 방식인 개발자 직접 제어와 반대되는 개념이다. 코드의 결합도를 낮추고, 유연한 아키텍처와
개요 Spring이 지정된 패키지 이하를 탐색하여 특정 어노테이션 (@Annotation)이 붙은 클래스들을 찾아내고, Spring 빈 (Bean)으로 등록하는 자동 설정 기능이다. 컴포넌트 스캔의 기본 범위는 @SpringBootApplication이 선언된 클래스의
개요 Spring MVC (Model-View-Controller)는 Spring Framework에서 제공하는 웹 어플리케이션 개발을 위한 핵심 모듈이다. MVC 패턴을 기반으로 웹 요청을 처리하고, 데이터를 전달하며, View (화면)을 렌더링한다. Spring B
RESTful 웹 서비스를 만들 때 사용하는 핵심 어노테이션. 클래스 내의 모든 메서드가 HTTP 요청을 받아서 JSON, XML 등의 형태로 응답을 자동으로 반환한다.클라이언트가 보낸 HTTP 요청의 다양한 정보 (URL 경로 변수, 쿼리 파라미터, 요청 본문, et
개발자의 boilerplate code를 줄이고 가독성을 높일 수 있도록 지원하는 java 라이브러리✏️ Boilerplate Code반복적이고 본질적인 로직과 무관하지만 반드시 작성해야 하는 코드Java에서는 객체의 필드를 다룰 때 getter, setter, 메서드
개요 클라이언트로부터 받은 데이터가 사전에 정의된 규칙에 맞는지 확인하는 과정. 검증 과정 없이 잘못된 데이터가 시스템으로 들어오면, 예상치 못한 오류가 발생하거나 데이터베이스에 원치 않는 값이 저장될 수 있다. 따라서 입력값 검증 과정을 통해 어플리케이션의 안정성과
개요 Spring Boot는 별도의 예외 처리를 설정하지 않았을 때, BasicErrorController를 사용하여 처리되지 않은 예외를 자동으로 처리한다. 웹 브라우저에서 페이지를 요청했을 때 오류가 발생하면 Whitelabel Error Page 형식으로 응답하고
개요 "Convention over Configuration (설정보다 관례)" 철학을 기반으로, 개발자의 특별한 설정이 없는 이상, 가장 보편적이고 표준적인 방식으로 어플리케이션 동작 방식을 구성한다. 어플리케이션의 메인 클래스에 붙는 @SpringBootApplic
✏️ 어플리케이션 로그 관리의 중요성장애 발생 시 로그를 통해 언제, 어떤 오류가 발생했는지 빠르게 파악할 수 있다.Stack Trace, 에러 메시지 등 상세 정보를 확인하여 근본 원인을 추적할 수 있다.버그 재현이 어려운 경우에도 로그를 통해 상황을 복원할 수 있다
Java의 AOP AOP (Aspect Oriented Programming, 관점 지향 프로그래밍)는 OOP의 한계를 보완하는 프로그래밍 패러다임이다. OOP는 주로 '기능' 단위로 클래스를 구현하고, AOP는 '공통 관심사' (로깅, 트랜잭션 처리, 보안, 성능 측
개요 RDBMS에 데이터를 CRUD (저장/조회/수정/삭제)할 수 있도록 표준화된 Java의 ORM 프레임워크 > ✏️ ORM (Object-Relational Mapping)? > 객체 지향 프로그래밍 언어와 데이터베이스 간에 데이터를 매핑하는 기술로, 개발자는 S
개요 Spring Data JPA가 제공하는 인터페이스로, JPA를 더 쉽게 다루기 위한 추상화 계층이다. 개발자가 데이터베이스에 접근하는 코드 DAO를 직접 구현하지 않고도 데이터베이스를 조작할 수 있도록 하는 인터페이스 기반 프레임워크이다. 주요 메서드 조회 |
개요 JPA의 변경 내용 (저장/수정/삭제)은 트랜잭션이 있을 때만 데이터베이스에 안전하게 반영된다. JPA에서는 서비스 계층에서 트랜잭션을 시작하며, Spring은 @Transactional 어노테이션을 사용해 트랜잭션을 자동으로 관리한다. JPA 트랜잭션 Comm
JWT (JSON Web Token)