스프링부트 9

[ Spring ] @Transactional 이란?

📘 @Transactional ?@Transactional 어노테이션을 사용하면, 해당 메소드에서 실행되는 코드가 트랜잭션 단위로 처리된다는 의미이다. ✅ 트랜잭션의 큰 특징 ( 롤백 )트랜잭션의 어노테이션을 사용시 시작될 때부터 끝날 때까지의 모든 데이터베이스 작업을 하나의 묶음으로 간주한다.묶음의 작업이 모두 성공적이면 커밋하고, 하나라도 실패하면 모두 취소(롤백)해야 한다는 보장을 제공한다. ⚒️ @Transactional 코드 예시 @Transactional public void createAndUpdateUser(String name, String email, String newEmail){ userDao.addUser(name, email); if(true..

[ Spring JDBC ] - 은행 앱 요구사항 명세서

1. 프로그램 목표은행 시스템을 객체지향적으로 설계하고 구현클래스와 객체 간의 관계를 이해하고 활용사용자 정의 예외를 만들어 예외 상황을 처리배열을 활용해 데이터를 관리 2. 기능 요구사항2-1 클래스 설계Bank 클래스:고객을 등록하고, 고객의 정보를 조회합니다.Customer 클래스:고객 ID와 이름을 포함하며, 고객이 소유한 통장(Account) 목록을 관리합니다.Account 클래스:계좌 번호, 잔액, 소유 고객 ID를 포함하며, 입금 및 출금 기능을 제공합니다.사용자 정의 예외 클래스:InvalidTransactionException: 잘못된 입출금 요청 처리.AccountNotFoundException: 존재하지 않는 계좌 요청 처리.BankOperationException: 일반적인 은행 관..

[ Spring ] Spring Data JDBC 개념

1. JDBC와 Spring Data JDBC의 차이점1-1 JDBC (Java Database Connectivity)java에서 데이터베이스에 접근할 수 있게 해주는 API로, SQL 쿼리 진행, 데이터베이스 연결 관리 등의 기능 제공JDBC는 데이터베이스와의 직접적인 상호작용을 처리하지만, 이를 사용하기 위위해서는 많은 보일러 플레이트 코드가 필요보일러 플레이트 코드 : 컴퓨터 프로그래밍에서 반복적으로 사용되는 코드1-2 Spring Data JDBCSpring 프레임워크의 일부로, JDBC의 복잡성을 추상화하고, 간소화 한다.Spring JDBC는 템플릿 디자인 패턴을 사용하여 코드 중복을 줄이고, 개발자가 SQL 쿼리에 집중할 수 있도록 돕는다. 2. Spring Data JDBC의 장점2-1 ..

가상머신과 도커

📁 가상머신과 도커📄   가상화(Virtualization)운영체제를 여러 개 띄우는 기술은 가상화라고 부르며, 대표적인 솔루션은 다음과 같다.VMware, VirtualBox, Hyper-V → 각각 독립적인 OS(Windows, Linux 등)를 실행하는 **가상 머신(VM)**을 제공KVM, Xen → 리눅스 기반 가상화 기술 📄  도커(Docker)도커는 운영체제(OS)를 여러 개 띄우는 것이 아니라, 하나의 OS에서 여러 개의 컨테이너(Container)를 실행하는 기술즉, 도커는 가상 머신처럼 OS를 통째로 가상화하는 것이 아니라, 하나의 OS에서 격리된 환경을 여러 개 만드는 것 🚀 차이점 요약가상 머신(VM)하드웨어 수준에서 OS를 여러 개 실행VMware, VirtualBox, H..

가상화 기술 2025.03.19

[ Spring Security ] JWT - 로그인 구현

📘 JWT 들어가기폼로그인을 막는다.세션을 사용하지 못하도록 한다.API를 통해 로그인을 하면 JWT토큰을 Body와 쿠키를 통해 전송한다.이때 accessToken, refreshToken을 반환한다Role은 사용하지 않을거라 제외했다 ! 로그인 요청POST /auth/register{ "email": "user@example.com", "password": "123456"}Response:성공 시: 200 OK실패 시: 400 Bad Request 로그인 응답POST /auth/login{ "email": "user@example.com", "password": "123456"}Response:성공 시: 200 OK { "token": "JWT_ACCESS_TOKEN" }실패 시: ..

[ Spring ] Filter / FilterChain 개념, 사용법

📘 Filter✅ Filter의 역할Filter는 요청을 가로채서 처리하는 개별 필터이며, 서블릿에 도착하기 전 여러가지 문(필터)이다.필터가 없다면 요청이 바로 서블릿에게 도착하겠지만, 필터가 있다면 필터에 걸쳐 → 걸쳐 → 걸쳐서 서블릿에 도착한다. ✅ Filter의 동작 흐름클라이언트 요청이 서블릿에 도착하기 전에 요청을 가로채서 필터처리(전처리)서블릿이 응답을 반환할때 응답을 가로채서 후처리 해준다. ✅ Filter Chain과의 관계여러개의 필터가 존재할 경우 체인 형태(Filter Chain)로 연결되어 실행된다.Filter가 요청을 가로채서 필터링한 후, FilterChain을 매개변수로 받아서 FilterChain.doFilter(request, response)를 실행하면 다음 필터 또..

[ Spring ] @RequiredArgsConstructor란 ?

📘 @RequiredArgsConstructor ?✅ final 필드나 @NonNull이 붙은 필드들에 대해 생성자를 자동으로 생성해준다 .✅ Lombok 라이브러리 에서 제공하는 어노테이션이다.  ⚒️ 코드 예시@RequiredArgsConstructor@Servicepublic class UserService { private final UserDao userDao; private final TransactionTemplate transactionTemplate;}final 필드, @NonNull 필드에 대해 생성자를 생성해주고이 생성자를 통해 의존성 객체를 자동으로 주입해준다.객체 주입 (Dependency Injection, DI) public UserService(UserDao us..

[ Spring Boot ] 프레임워크와 라이브러리

📘 프레임워크와 라이브러리프레임워크프레임워크는 프로그램 개발 시 필수적인 코드, 알고리즘, D연동 같은 기능을 위해 기본적은 구조(=뼈대)를 제공한다.개발자는 이 구조(=뼈대) 위에서 코드를 하고 프로그램을 개발한다. ⚒️  예시 : 스프링 부트에서 사용되는 기본 구조 (=뼈대) 1️⃣ 자동 설정 (Auto Configuration) : properties, yml 파일에 설정을 추가하는 것만으로 데이터베이스 연결, 서버포트 설정을 할 수 있다.server.port=8080spring.datasource.url=jdbc:mysql://localhost:3306/mydb 2️⃣ 데이터베이스 연동 (JPA, Hibernate) : JPA와 Hibernate를 내장, JpaRepositor를 이용해 데이터를..

[ Spring Boot ] yml, properties 차이

📘 yml, propertiesyml, properties는 서버 설정, 데이터베이스 설정, 외부 설정 정보 등을 관리할때 사용하는 파일이다. ❗yml, proprties의 차이 ?yml, properties의 차이는 단순히 표현 방식에 있다.properties는 직관적인 구조이므로, 작은 규모의 간단한 프로그램에 적합하다.yml은 계층적으로 구성되어져 있어서,  복잡한 설정을 가진 프로그램(=큰 프로그램) 에서 상호 관계를 한눈에 보기 쉽다. 📌 application.properties사용법 : 단순한 key=value 쌍으로 구성된다.특징 : 평면구조로, 복잡한 데이터 구조 표현이 어렵다사용 예시server.port=8080spring.datasource.url=jdbc:mysql://localh..