본문 바로가기

DEV_BACKEND/Spring

(11)
[멋쟁이사자처럼 부트캠프 TIL 회고] 백엔드 부트캠프 13기: Java 53일차 Spring Security Spring SecuritySpring Security는 애플리케이션의 인증(Authentication)과 인가(Authorization) 기능을 제공하는강력한 보안 프레임워크 1️⃣ 웹 애플리케이션에 보안이 필요한 이유웹 애플리케이션은 다양한 보안 위협에 노출될 수 있음.인증되지 않은 사용자의 접근 차단 (로그인)권한 없는 사용자의 민감한 데이터 접근 차단 (권한 관리)CSRF, XSS, SQL Injection 같은 보안 공격 방어✔ 즉, "누가 시스템을 사용할 수 있는지(인증) + 어떤 데이터를 볼 수 있는지(인가)"를 결정하는 것이 필수.✔ Spring Security는 이러한 보안 기능을 자동화하여 쉽게 적용할 수 있도록 도와줌. 2️⃣ Spring Security가 해결하는 문제들Spring ..
[멋쟁이사자처럼 부트캠프 TIL 회고] 백엔드 부트캠프 13기: Java 52일차 Double(래퍼 클래스), 빌더 패턴(Builder Pattern) 기본형(primitive type)과 래퍼 클래스(wrapper class)의 차이🔹 double (기본형, primitive type)8바이트(64비트) 크기의 부동소수점(floating-point) 타입.메모리 사용이 적고 연산 속도가 빠름.null을 저장할 수 없음.Java의 기본 데이터 타입이라서 객체가 아니라 값 자체를 저장함.예제:double pi = 3.14;double result = pi * 2; double은 산술 연산이 빠르지만, 객체처럼 사용하지 못함. 🔹 Double (래퍼 클래스, Wrapper Class)double을 객체로 감싸는 래퍼 클래스.Java의 객체 타입으로 null을 저장할 수 있음.double과 달리 컬렉션(List, Map 등)에 저장 가능.메서드를 제공 (..
[멋쟁이사자처럼 부트캠프 TIL 회고] 백엔드 부트캠프 13기: Java 47일차 Spring Data JPA Spring Data JPASpring 프레임워크에서 JPA(Java Persistence API)를 더 쉽게 사용할 수 있도록 도와주는 모듈(프레임워크).기본적인 CRUD 기능을 자동으로 제공하며, 복잡한 쿼리도 간단하게 작성할 수 있도록 지원함.Spring Data JPA (Java Persistence API)는 Spring 프레임워크의 일부로, 자바 개발자들이 관계형 데이터베이스의 데이터 접근을 더욱 용이하게 할 수 있도록 설계되었습니다. 이 모듈은 JPA를 사용하여 데이터 액세스 계층을 쉽게 구현하고 관리할 수 있게 해주며, 복잡한 쿼리를 간단하게 처리하고, 데이터베이스 작업을 자동화하여 개발자의 생산성을 향상시킵니다. 1. Spring Data JPA를 사용하는 이유반복적인 CRUD 작업의 생..
[멋쟁이사자처럼 부트캠프 TIL 회고] 백엔드 부트캠프 13기: Java 44일차 JPA JPA (Java Persistence API) : Persistence_지속됨(없어지지 않고 오래 동안) JPA : 인터페이스들의 묶음 = Java 애플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스. 인터페이스는 '규칙'과 같음. JPA는 데이터베이스를 다루는 방법에 대한 표준적인 규칙을 정의해 놓은 것.이 규칙을 따르면 어떤 데이터베이스를 사용하든 Java 코드 변경 없이 데이터베이스를 쉽게 전환할 수 있음.데이터, 그중에서도 특히 엔티티(Entity)의 영속성을 관리하기 위해 쓴다고 보면 됨.JPA에서 객체에 영속성을 부여하는 주요 이유JPA에서 객체에 영속성(Persistence) 을 부여하는 이유는 객체와 데이터베이스 간의 데이터 일관성을 유지하고, 효율적인 데이터 관리를 ..
[멋쟁이사자처럼 부트캠프 TIL 회고] 백엔드 부트캠프 13기: Java 43일차 EJB EJB(Enterprise JavaBeans)(Legacy)EJB(Enterprise JavaBeans)는 Java EE(Jakarta EE) 플랫폼의 핵심 기술로, 엔터프라이즈 애플리케이션 개발을 위한 서버 측 컴포넌트 모델입니다. 복잡한 트랜잭션, 보안, 확장성 등을 표준화된 방식으로 처리하기 위해 설계되었으며, 주로 대규모 분산 시스템에 사용됩니다. 1. EJB의 주요 특징컨테이너 관리: EJB 컨테이너가 라이프사이클, 트랜잭션, 보안 등을 자동으로 처리합니다.분산 컴포넌트: 원격 호출(RMI-IIOP)을 통해 다른 시스템과 통신 가능합니다.선언적 프로그래밍: 어노테이션 또는 XML로 설정을 간소화합니다 (예: @Stateless, @TransactionAttribute).2. EJB 유형(1) 세..
[멋쟁이사자처럼 부트캠프 TIL 회고] 백엔드 부트캠프 13기: Java 41일차 웹 프로그램 실습-1 다음과같이 initializr로 프로젝트를 생성해주었다.이후 dependencies 체크후 MySQL 워크벤치에서 CREATE TABLE friend (     id SERIAL PRIMARY KEY,     name VARCHAR(255),     email VARCHAR(255) ); 해주고,INSERT INTO friend (name, email) VALUES          ('김민수', 'minsu.kim@example.com'),          ('이하은', 'haeun.lee@example.com'),          ('박서준', 'seojun.park@example.com'),          ('최지우', 'jiwoo.choi@example.com'),          ('정다현', ..
[멋쟁이사자처럼 부트캠프 TIL 회고] 백엔드 부트캠프 13기: Java 40일차 스트림 2. 스트림(Stream)스트림(Stream)은 컬렉션(List, Set 등) 데이터를 처리하는 방식 으로, 데이터를 필터링, 변환, 집계하는데 사용됩니다. Java 8부터 지원되며, 내부 반복을 사용하여 코드 가독성과 성능을 높입니다. 스트림의 특징✅ 연속적 처리: 데이터를 하나씩 처리하는 방식(파이프라인)✅ 중간 연산(Intermediate Operation): filter(), map(), sorted() 등✅ 최종 연산(Terminal Operation): collect(), forEach(), reduce() 등✅ 병렬 처리 가능: parallelStream()을 사용하면 병렬 연산 가능람다식 & 스트림을 사용하면 좋은 점✅ 코드가 간결해진다.✅ 가독성이 좋아진다.✅ 병렬 처리 가능 -> 성능 ..
[멋쟁이사자처럼 부트캠프 TIL 회고] 백엔드 부트캠프 13기: Java 37일차 쿠키, 세션 그리고 토큰 1. 쿠키 (Cookie)정의쿠키는 웹 서버가 클라이언트(주로 브라우저)에 저장하도록 보내는 작은 텍스트 파일입니다.클라이언트는 이후 같은 사이트에 접속할 때 쿠키 데이터를 함께 전송하여 서버가 사용자의 상태를 파악하도록 돕습니다.주요 특징저장 위치: 클라이언트(브라우저)의 로컬 저장소.수명: 만료 시간(Expiration)을 지정할 수 있으며, 만료 시간이 지나면 자동으로 삭제됨. (세션 쿠키는 브라우저 종료 시 삭제됨)보안: HTTPOnly, Secure, SameSite 등의 속성을 통해 보안 강화가 가능하지만, 기본적으로 클라이언트에 저장되므로 민감 정보를 저장하는 것은 권장되지 않음.크기 제한: 개별 쿠키는 보통 몇 KB 크기로 제한되며, 브라우저마다 저장 가능한 쿠키 수에도 제한이 있음.사용 ..
Spring AOP 개념 심화 AOP (Aspect-Oriented Programming, 관점 지향 프로그래밍) AOP는 비즈니스 로직과 공통 관심사(횡단 관심사, Cross-Cutting Concerns)를 분리하여 코드를 효율적으로 관리할 수 있도록 해주는 프로그래밍 패러다임입니다. AOP의 주요 개념횡단 관심사 (Cross-Cutting Concerns)애플리케이션 전반에 걸쳐 반복적으로 사용되는 공통 기능.예: 로깅, 보안, 트랜잭션 관리, 예외 처리.비즈니스 로직과의 분리AOP를 사용하면 로직 코드에 공통 기능을 직접 작성하지 않고, 분리된 모듈(Aspect)로 관리 가능.이는 유지보수성과 코드의 가독성을 향상시킵니다. AOP가 필요한 이유 (왜 쓰는가?)코드 중복 제거반복적으로 작성되는 로직(예: 로그 출력)을 별도의 모..
[멋쟁이사자처럼 부트캠프 TIL 회고] 백엔드 부트캠프 13기: Java 32일차 Spring 2 1. Optional: Null 처리를 우아하게 관리하여 코드 안정성을 높이는 도구.Java 8에서 도입된 ‘클래스’, 스프링에서 Null값을 처리하거나 의존성을 더 안전하게 관리하는 데 자주 사용됨. (예외처리를 메서드로 한다) 주요 메서드:Optional.of(value): 절대 null이 아닌 값을 감싸는 Optional 객체를 반환합니다. 값이 null이면 예외를 발생시킵니다.Optional.ofNullable(value): 값이 null일 가능성이 있을 때 Optional 객체로 감쌉니다.Optional.empty(): 빈 Optional 객체를 생성합니다.orElse(defaultValue): Optional 값이 비어있을 경우 기본값을 반환합니다.orElseThrow(exceptionSupp..