멋쟁이사자처럼백엔드 28

[ 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 ..

[ java ] Static 메서드에서 Field 접근

📌 Static 메서드에서 Field 접근Static method는 인스턴스 생성 전에도 사용 가능static 필드에만 접근이 가능하다.instance 필드는 인스턴스 생성 전에는 사용이 불가능하기 때문에instanceMethod는 인스턴스 생성 후에 사용 가능instance필드, static 필드 둘다 접근이 가능하다.public Eclass(){ public static int sField; //staticField public int iField; //instanceField public static void staticMethod(){ System.out.println(sField); System.out.println(iField); //오류 발생 } public void instan..

JAVA 2025.03.31

[ java ] 인터페이스 (다중구현, static, default)

📌 인터페이스란?public interface Flyable { public void 날다();}public class 나비 implements Flyable{ @Override public void 날다() { System.out.println("나비가 훨훨 납니다"); }}public class FlyableTest { public static void main(String[] args) { Flyable flyable = new 나비(); //객체 생성은 안되지만 타입으로 사용 가능 }}인터페이스는 클래스가 구현해야할 메서드의 형식을 정의하는 청사진(계약서) 역할을 한다.인터페이스를 구현할때는 implemets를 사용한다.클래..

JAVA 2025.03.31

가상머신과 도커

📁 가상머신과 도커📄   가상화(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 ] @Transactional과 예시

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