THE 1995 DevOps Note
THE 1995 DevOps Note
Back-End/Spring
Spring Swagger
2025.02.10
Spring Swagger란?Swagger는 RESTful API의 문서를 자동으로 생성해주는 도구입니다. Spring Boot 프로젝트에서 주로 Swagger UI를 통해 API 명세를 시각적으로 보여줍니다. 이를 통해 개발자나 클라이언트는 API의 동작 방식과 요청/응답 구조를 쉽게 이해하고 테스트가능Swagger는 이제 **OpenAPI Specification (OAS)**로 발전했으며, Springdoc OpenAPI 라이브러리를 주로 사용Swagger의 장점자동 API 문서화: 코드 주석 기반으로 자동 문서 생성API 테스트 용이: Swagger UI에서 직접 API 호출 및 테스트개발자 협업 강화: 명확한 API 명세 제공버전 관리: API 변경에 따른 문서 자동 업데이트Spring Boot..
Back-End/Spring
Spring Security
2025.02.10
Spring Security는 스프링 프레임워크 기반의 인증과 권한 부여(Authentication & Authorization)를 담당하는 보안 프레임워크입니다. 웹 애플리케이션과 REST API에서 보안을 강화하기 위해 사용주요 기능인증(Authentication)사용자가 누구인지 확인하는 과정예: 로그인 처리권한 부여(Authorization)인증된 사용자가 특정 리소스에 접근할 수 있는 권한이 있는지 확인예: 관리자 페이지 접근 제한보안 공격 방어CSRF(Cross-Site Request Forgery) 방어세션 고정 공격 방어XSS(Cross-Site Scripting) 방어클릭재킹 방어다양한 인증 방식 지원기본 폼 로그인HTTP Basic AuthOAuth2/OpenID ConnectJWT(J..
Back-End/JPA
JPA 어노테이션
2025.02.06
1. 엔티티 매핑 관련어노테이션설명@Entity클래스가 JPA 엔티티임을 나타냅니다.@Table(name = "table_name")엔티티와 매핑되는 테이블 이름을 지정합니다.@Id기본 키 필드를 지정합니다.@GeneratedValue(strategy = GenerationType.IDENTITY)기본 키 값을 자동 생성합니다.@Column(name = "column_name")특정 필드를 테이블 컬럼과 매핑합니다.@Transient데이터베이스에 저장하지 않는 필드를 선언합니다.@Embedded값 타입 객체를 포함시킬 때 사용합니다.예시 코드package com.example.demo.hr;import java.sql.Date;import java.util.List;import org.hibernate...
Back-End/JPA
JPA EAGER / LAZY
2025.02.06
JPA에서 EAGER와 LAZY는 엔티티 연관 관계를 조회할 때 데이터 로딩 방식을 지정하는 FetchType 옵션이다.1. EAGER (즉시 로딩)연관된 엔티티를 즉시 조회합니다.부모 엔티티를 조회할 때 연관된 자식 엔티티도 즉시 함께 가져옵니다.특징N+1 문제가 발생할 수 있음즉시 로딩이므로 불필요한 데이터가 로드될 가능성 있음연관 데이터가 반드시 필요한 경우 적합코드 예시@ManyToOne(fetch = FetchType.EAGER) @JoinColumn(name="job_id")//생성시 칼럼 이름은 //외래키 만드는 구문 JobEntity job; 2. LAZY (지연 로딩)연관된 엔티티를 실제로 접근하는 시점에 조회합니다.Proxy 객체를 통해 데이터를 필요할 때만 로딩합니다.특징N+1 문제를..
Back-End/JPA
JPQL
2025.02.03
JPQL (Java Persistence Query Language)**는 **JPA (Java Persistence API)에서 사용되는 쿼리 언어 객체 지향 프로그래밍 환경에서 데이터베이스에 접근하기 위해 사용되며, SQL과 유사하지만 엔티티(Entity)와 필드를 대상으로 쿼리를 작성하는 것이 특징JPQL 특징객체 중심 쿼리 언어: JPQL은 SQL처럼 테이블과 컬럼을 대상으로 하지 않고 엔티티와 필드를 대상으로 쿼리데이터베이스 독립적: 특정 DBMS에 종속되지 않음표준 JPA 쿼리 방식: JPA가 지원하는 모든 데이터베이스에서 사용 가능JPQL 예제기본 JPQLjava복사편집// 모든 고객 정보 조회 String jpql = "SELECT c FROM CustomerEntity c"; TypedQ..