728x90

전체 글 75

[Spring] @Transactional의 동작 방식과 전파 속성

목차트랜잭션이란?@Transactional 어노테이션 동작 방식@Transactional 속성@Transactional 전파 속성(propagation)정리 1. 트랜잭션이란?트랜잭션은 데이터베이스의 상태를 변화시키는 작업의 논리적 단위로서 원자성(Atomicity), 일관성(Consistency), 격리성(Isolation), 지속성(Durability)의 ACID 특성을 보장한다.Atomicity (원자성) - 트랜잭션의 모든 쿼리가 DB에 반영되거나, 모두 반영되지 않아야 한다.Consistency (일관성) - 트랜잭션 처리 결과는 항상 일관성이 있어야 한다.Isolation (격리성) - 서로 다른 트랜잭션을 서로의 연산에 개입할 수 없다.Durability (지속성) - 트랜잭션이 성공적으로 ..

Spring Boot 2025.05.02

[AI] MCP(Model Context Protocol), AI와 앱을 연결하는 새로운 표준

목차MCP(Model Context Protocol)란?Function Calling, Google A2A와 비교MCP의 아키텍처와 구성 요소MCP 장점MCP 활용 사례 및 사용해보기 1. MCP(Model Context Protocol)란?2024년 11월 Anthropic이 MCP(Model Context Protocol)를 오픈소스로 공개했다. MCP는 LLM에 컨텍스트를 제공하는 방식을 표준화하는 개방형 프로토콜이다. MCP는 AI 모델을 다양한 데이터 소스 및 도구에 연결하는 표준화된 방식을 제공한다. 이전에는 각 AI 모델이 특정 데이터 소스나 도구와 통합되기 위해 별도의 커스텀 코드를 작성해야했지만, MCP를 통해 이러한 복잡성을 줄이고 간소화 시켜준다. MCP는 Claude, OpenAI,..

AI 2025.04.20

[Spring] Gradle 핵심 정리

목차Gradle의 등장 배경과 핵심 개념Spring 프로젝트에 Gradle 설정하기Maven vs GradleGradle 관련 명령어 1. Gradle의 등장 배경과 핵심 개념Java 빌드 도구 역사에서 Ant와 Maven에 이어 2012년 Gradle이 등장했다. Maven의 XML 기반 선언적 접근은 복잡한 빌드 로직 구현에 한계가 있었고, 이를 해결하기 위해 Gradle이 만들어졌다. Gradle의 특징은 다음과 같다. 1) Groovy 기반 DSL Gradle은 XML 대신 Groovy(또는 Kotlin) 기반의 DSL을 사용해 가독성이 높고 유연한 빌드 스크립트를 작성할 수 있다. 2) 태스크 기반 빌드 모델 모든 빌드 과정을 태스크 단위로 나누어 관리하며, 태스크 간 의존성 설정이 가능하다.t..

Spring Boot 2025.03.27

[Spring] 효율적인 패키지 구조와 네이밍 컨벤션

목차패키지 구조의 중요성과 기본 원칙스프링 프로젝트 초기 세팅을 위한 패키지 구조 가이드네이밍 컨벤션과 예시도메인 중심 vs 계층 중심 구조다양한 패키지 구성 예시 1. 패키지 구조의 중요성과 기본 원칙패키지 구조는 단순한 코드 정리 이상의 의미를 갖는다. 잘 설계된 패키지 구조는 코드의 가독성을 높이고, 유지보수를 용이하게 하며, 개발자 간 협업을 효율적으로 만든다. 스프링 프로젝트에서 패키지 구조가 중요한 이유는 다음과 같다. 1.1 코드 탐색성 향상개발자가 코드를 처음 접할 때, 패키지 구조는 프로젝트의 전체 구조를 이해하는 첫 번째 단서가 된다. 논리적이고 명확한 패키지 구조는 새로운 개발자가 빠르게 프로젝트에 적응할 수 있게 도와준다.1.2 의존성 관리패키지는 의존성 관리의 기본 단위다. 잘 설..

Spring Boot 2025.03.27

[Linux] 명령어 모음3 - 시스템관련

목차du (Disk Usage)df (Disk Free)cat /proc/cpuinfolscputopmpstatifconfiggpustatlspci | grep -i VGA 메모리, CPI, GPU 관련 명령어를 정리해보자. 1. du (Disk Usage)디스크 사용량 확인옵션-h : 용량을 보기 좋게 단위로 표시-a : 모든 하위 디렉토리에 포함된 파일까지 표시-s : 지정한 디렉터리 내에 존재하는 모든 파일의 합을 보여줌예시du -sh video/ 2. df (Disk Free)디스크 여유 공간 확인파일시스템, 디스크 크기, 사용된 용량, 사용가능한 용량, 사용된 용량의 비율, 마운트된 지점을 순서대로 보여준다.옵션-h : 용량을 보기 좋게 단위로 표시-k : KB 단위로 확인-m : MB 단위로 ..

Linux 2025.03.27

[Linux] 명령어 모음2 - 권한관련

목차sudo (Super User DO)chmod (Change Mode)chown (Change Owner)chgrp (Change Group)passwduseradduserdelgroupaddgroupdel 1. sudo (Super User DO)일반 사용자가 관리자 권한으로 명령을 실행 2. chmod (Change Mode)파일이나 디렉토리의 권한을 변경예시chmod 755 file.txt 3. chown (Change Owner)파일이나 디렉터리의 소유자를 변경옵션-R : 하위 파일까지 변경예시소유자 변경: chown user1 file.txt소유자와 그룹 변경 chown root:root file.txt 4. chgrp (Change Group)파일이나 디렉터리의 그룹을 변경예시chgrp g..

Linux 2025.03.27

[Linux] 명령어 모음1 - 파일 및 디렉터리관련

목차ls (list)cd (change directory)pwd (Print Working Directory)mkdir (Make Directory)touchcp (Copy)mv (Move)cat (Concatenate)grep (Global Regular Expression Print)find 1. ls (list) : 목록 조회ls: 파일 및 목록 조회옵션-l: 파일의 자세한 정보 표시 (파일 종류, 권한, 소유자, 그룹, 크기, 수정 시간 등)-a: 숨겨진 파일 및 디렉터리 포함-lh : 파일 크기를 보기 쉽게 표시예시ls -lls -als -lh 2. cd (change directory) : 디렉터리 이동cd: 홈으로 이동cd ..: 상위 디렉터리로 이동cd - : 이전 디렉터리로 이동 3. p..

Linux 2025.03.27

[Java] 객체지향 프로그래밍이란?

목차객체지향 프로그래밍이란?객체지향의 특징절차지향 vs 객체지향객체지향 설계의 핵심 원칙 1. 객체지향 프로그래밍이란?객체지향 프로그래밍(OOP)은 실세계의 사물을 객체로 모델링하여 개발하는 프로그래밍 기법이다. Java가 대표적인 객체지향 언어지만, Python, C++, C#도 객체지향 패러다임을 지원한다. 객체지향의 핵심은 역할, 책임, 협력의 개념이다.역할: 각 객체는 시스템 내에서 특정 역할을 맡는다.책임: 객체는 자신이 맡은 역할에 따른 책임을 가진다.협력: 여러 객체가 서로 메시지를 주고받으며 협력한다.예를 들어, 온라인 쇼핑몰 시스템에서 '주문' 객체는 주문 정보를 관리하는 역할을 하며, 주문 상태 변경에 대한 책임을 가지고, '결제' 객체와 협력하여 전체 주문 프로세스를 완성한다. 2. ..

Java 2025.03.27

[서버] RESTful API 란?

목차RESTful API의 개념과 등장 배경REST 아키텍처의 핵심 구성요소RESTful API 설계 원칙RESTful API 와 다른 방식 비교적용 시 참고사항 1. RESTful API의 개념과 등장 배경REST(Representational State Transfer)는 2000년 로이 필딩(Roy Fielding)이 자신의 박사 논문에서 처음 소개한 소프트웨어 아키텍처 스타일이다. 필딩은 웹의 창시자 중 한 명으로, HTTP 프로토콜 설계에도 참여했다. 그는 웹의 장점을 최대한 활용할 수 있는 아키텍처로 REST를 제안했다. RESTful API란 REST 아키텍처의 제약조건을 준수하는 애플리케이션 프로그래밍 인터페이스를 말한다. 쉽게 말해, 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하면서..

카테고리 없음 2025.03.27

[Java] Checked Exception과 Unchecked Exception

목차Checked ExceptionUnchecked ExceptionError vs Exception 1. Checked Exception Checked Exception은 컴파일 시점에 확인되며, 반드시 처리해야하는 예외이다. 예를 들어 IOException, SQLException 등이 있으며 이에 대해서는 throws나 try~catch로 처리해야한다. Checked Exception를 사용하는 경우는 다음과 같다.외부 환경과의 상호작용에서 발생 가능한 예외에 적합.ex) 파일 입출력, 네트워크 통신 등 (보통 예측 가능하며 처리 가능하다) 2. Unchecked Exception Unchecked Exception은 런타임 시점에 발생하며, 컴파일러가 처리 여부를 강제하지 않는다. 예를들어 Run..

Java 2025.03.06

[Spring] Spring Bean이란?

목차Spring Bean이란?Bean 등록 방법Bean 생성과정 / 생명주기Bean Scope 1. Spring Bean이란?Spring Bean빈은 인스턴스화된 객체를 의미하며, 스프링 컨테이너에 등록된 객체로 스프링 컨테이너에 의해 관리된다.스프링 빈은 싱글톤(Singleton) 패턴으로 관리되어 애플리케이션 전체에서 하나의 인스턴스만 존재하게 된다.Bean 왜 쓸까?Bean을 통해 스프링 컨테이너에 객체 간의 의존 관계를 관리할 수 있다. 2. Bean 등록 방법Bean 등록 방법으로 다음과 같은 방법이 있다.(1) xml에 직접 등록(2) @Bean 어노테이션 사용메서드 위에 @Bean태그를 사용하고 AppConfig 객체 위에 @Configuration, @ComponentScan, @Impor..

Spring Boot 2025.03.06

[Java] 비동기 처리를 위한 CompletableFuture 완벽 가이드

목차비동기 프로그래밍의 개념왜 CompletableFuture를 사용할까?CompletableFuture 사용법 비동기 작업을 위해 Java8부터 도입된 CompletableFuture에 대해 살펴보자. 1. 비동기 프로그래밍의 개념CompletableFuture에 대해 설명하기 앞서, 동기와 비동기 그리고 블로킹과 논블로킹에 대한 개념을 짚고 넘어가자. 왜 이 개념에 대해 짚고 넘어가야할까? 동기와 비동기는 실행 시점에 대한 개념으로 어떻게 시작하고 진행할 지에 대한 것이며, 블로킹 논블로킹은 결과를 받는 방식과 관련된 개념으로 어떻게 기다리고 처리하는지에 대한 것이다. 이 개념을 시작으로 자바의 비동기 프로그래밍에 다가갈 수 있다. 1.1 동기 vs 비동기동기: 한 작업이 완료된 후에 다음 작업을 시..

Java 2025.03.06

[DB] 트랜잭션 격리수준 (Isolation level)

트랜잭션이란 데이터베이스의 상태를 변화시키기 위한 일련의 작업 단위로 ACID(원자성, 일관성, 독립성, 지속성)의 특징을 갖는다.  ACID에 대해 간략히 정리하면 다음과 같다. Atomicity (원자성) - 트랜잭션의 모든 쿼리가 DB에 반영되거나, 모두 반영되지 않아야 한다.Consistency (일관성) - 트랜잭션 처리 결과는 항상 일관성이 있어야 한다.Isolation (독립성) - 서로 다른 트랜잭션을 서로의 연산에 개입할 수 없다.Durability (지속성) - 트랜잭션이 성공적으로 처리되었다면 결과는 영구 반영되어야 한다. 트랜잭션 격리 수준은 여러 트랜잭션이 동시에 처리될 때, 특정 트랜잭션이 변하거나 조회하는 데이터를 다른 트랜잭션에서 볼 수 있게 허용할지 여부를 결정하는 것이다...

DB 2025.02.06

[Spring] SOLID 원칙

SOLID 원칙은 객체지향 설계 5원칙이라고도 불리며, 각 원칙의 앞글자를 따서 만들어졌다. SOLID 원칙은 객체지향 프로그래밍에서 개발 생산성을 높일 수 있으며 객체지향 설계의 핵심인 의존성 관리를 위해 준수해야하는 원칙이다.  SOLID 원칙을 지킴으로서 다음과 같은 이점을 얻을 수 있다.코드의 유지보수성 향상확장성 있는 설계 가능재사용 가능한 컴포넌트 구성 가능복잡성을 감소시켜 개발 생산성 향상 각각의 원칙을 하나씩 살펴보자. 1. SRP (Single Responsibility Principle, 단일 책임 원칙)SRP는 Single Responsibility Principle의 약자로 단일 책임 원칙을 의미한다. SRP는 한 클래스는 하나의 책임만 가져야한다는 원칙이다. 따라서 클래스는 오직 ..

Spring Boot 2025.02.06

[Java] Java 21 특징

Java 21은 2023년 9월에 출시된 LTS(Long Term Support) 버전으로 Java 21에서 추가된 기능과 특징에 대해 정리해보고자한다.주요 특징에 대해 정리하면 다음과 같다. Preview는 제외하였다.JEP 431 : Sequenced Collections (https://openjdk.org/jeps/431)JEP 439: Generational ZGC (https://openjdk.org/jeps/439)JEP 440: Record Patterns (https://openjdk.org/jeps/440)JEP 441: Pattern Matching for switch (https://openjdk.org/jeps/441)JEP 444: Virtual Threads (https://o..

Java 2025.01.31
728x90