JPA - Entity 관련 애너테이션
·
Spring
1. 엔티티 클래스 관련 애너테이션애너테이션설명주요 속성예시@Entity클래스를 JPA 엔티티로 선언.없음@Entity public class User { }@Table엔티티와 데이터베이스 테이블을 매핑.name(테이블 이름), schema, uniqueConstraints@Table(name = "users", schema = "public")1.1. @Entity클래스가 JPA 엔티티임을 나타냅니다.반드시 기본 생성자(파라미터 없는 생성자)가 있어야 합니다.@Entitypublic class User { // 엔티티 클래스}1.2. @Table엔티티와 데이터베이스 테이블 이름을 매핑합니다.생략하면 엔티티 클래스 이름이 테이블 이름으로 사용됩니다.추가 속성:name: 테이블 이름schema: 스키..
JPA - @Column 데이터베이스 컬럼 매핑
·
Spring
@Column 애너테이션은 JPA 엔티티 필드를 데이터베이스 컬럼과 매핑할 때 사용하는 애너테이션입니다. 기본적으로 엔티티의 필드 이름과 동일한 컬럼 이름으로 매핑되지만, 세부적인 설정을 통해 컬럼 속성을 지정할 수 있습니다.1. @Column의 주요 속성속성설명기본값name매핑할 데이터베이스 컬럼 이름필드 이름과 동일nullable컬럼에 NULL 값 허용 여부trueunique해당 컬럼에 유니크 제약 조건을 설정falselength문자열 컬럼의 길이 설정 (VARCHAR와 CHAR에만 적용)255precisionBigDecimal 타입에서 전체 자리수 설정 (숫자형에만 적용)0scaleBigDecimal 타입에서 소수점 자리수 설정0insertableINSERT 쿼리에 포함 여부trueupdatable..
JPA의 @GeneratedValue 전략
·
Spring
JPA의 @GeneratedValue 전략@GeneratedValue는 JPA에서 기본 키 값을 자동으로 생성하는 데 사용되며, 키 생성 전략을 결정하는 4가지 옵션을 제공합니다:GenerationType.IDENTITYAUTO_INCREMENT를 사용해 키를 생성합니다.각 INSERT마다 새로운 키를 생성합니다.트랜잭션과 독립적으로 동작하므로 배치 INSERT에 제약이 있을 수 있습니다.MariaDB에서는 주로 IDENTITY 사용GenerationType.SEQUENCESequence 객체를 사용해 키를 생성합니다.더 유연하고 배치 처리에 유리합니다.GenerationType.TABLE별도의 키 생성 테이블을 만들어 키를 관리합니다.Sequence를 지원하지 않는 데이터베이스에서도 사용 가능.하지만 ..
JPA/Hibernate 관련 설정 (application.properties)
·
Spring
# MariaDB settingspring.datasource.driver-class-name=org.mariadb.jdbc.Driverspring.datasource.url=jdbc:mariadb://localhost:3306/samplespring.datasource.username=rootspring.datasource.password=!123456# Hibernate settingspring.jpa.database-platform=org.hibernate.dialect.MariaDBDialectspring.jpa.hibernate.ddl-auto=createspring.jpa.show-sql=truespring.jpa.database-platform=org.hibernate.dialect.Mari..
JPA(Java Persistence API) 개요
·
Spring
1. JPA란?JPA(Java Persistence API)는 Java에서 객체를 관계형 데이터베이스에 매핑(ORM: Object-Relational Mapping)하기 위한 표준 인터페이스입니다.JPA는 데이터베이스 작업을 객체지향적으로 처리할 수 있도록 도와주며, SQL의 직접 작성 필요성을 줄이고 생산성을 높입니다.2. JPA의 주요 특징특징설명ORM(Object-Relational Mapping)자바 객체와 데이터베이스 테이블 간의 자동 매핑을 제공.표준 인터페이스 제공Hibernate, EclipseLink 등 다양한 구현체에서 동작하도록 표준화된 API를 제공.JPQL(Java Persistence Query Language)SQL과 유사한 문법을 가진 객체 중심의 질의 언어.트랜잭션 관리트랜..
Persistence Layer(영속성 계층)
·
Spring
Persistence Layer(영속성 계층)는 소프트웨어 아키텍처에서 애플리케이션 데이터가 데이터베이스 또는 파일 시스템과 같은 영구 저장소에 저장되고, 필요 시 이를 검색하거나 수정하는 계층을 말합니다. Persistence Layer는 비즈니스 로직과 데이터 저장소 간의 중간 다리 역할을 하며, 데이터 접근과 관리를 책임집니다.1. Persistence Layer의 역할Persistence Layer는 데이터 저장소와 애플리케이션의 다른 계층 간의 분리와 추상화를 제공합니다. 주요 역할은 다음과 같습니다:데이터 저장 및 검색데이터베이스에 데이터를 저장하거나 불러오는 작업을 담당합니다.데이터 접근 로직 캡슐화데이터베이스의 구조와 접근 방식을 추상화하여 애플리케이션 코드에서 직접적으로 의존하지 않도록 ..
Transaction(트랜잭션)과 TCL(Transaction Control Language)
·
Spring
1. Transaction(트랜잭션)의 정의트랜잭션은 데이터베이스에서 실행되는 작업의 논리적인 단위입니다.트랜잭션은 여러 작업(쿼리)을 묶어 하나의 작업처럼 실행하며, 모두 성공하거나 모두 실패하도록 보장합니다.ACID 특성을 기반으로 동작합니다:Atomicity (원자성): 트랜잭션의 모든 작업은 성공하거나 실패하며, 일부만 실행되는 경우는 없음.Consistency (일관성): 트랜잭션 완료 후 데이터베이스는 항상 일관된 상태를 유지함.Isolation (격리성): 트랜잭션은 독립적으로 실행되어 다른 트랜잭션의 영향을 받지 않음.Durability (지속성): 트랜잭션 완료 후 변경된 데이터는 영구적으로 저장됨.2. TCL(Transaction Control Language)의 정의TCL은 트랜잭션을..
MariaDB 엔진 - InnoDB vs MyISAM
·
Spring
SHOW ENGINES;Engine Support Comment Transactions XA SavepointsEngineSupportCommentTransactionsXASavepointsInnoDBDEFAULTSupports transactionsYESYESYESMyISAMYESNon-transactional engineNONONOMEMORYYESStored in memoryNONONOCSVYESCSV storage engineNONONOEngine: 스토리지 엔진의 이름.Support: 엔진이 활성화되어 있는지 여부 (YES, NO, DEFAULT).Comment: 간단한 설명.Transactions: 트랜잭션 지원 여부.XA: 분산 트랜잭션 지원 여부.Savepoints: 트랜잭션 내의 저장 지점..
Swagger (REST API 문서화)
·
Spring
1. Swagger란?Swagger는 REST API를 설계, 빌드, 문서화, 소비하는 데 유용한 도구입니다. Spring Boot에서는 Springdoc OpenAPI 라이브러리를 사용하여 Swagger UI를 쉽게 설정할 수 있습니다.2. Gradle 프로젝트에서 Swagger 적용 단계1단계: 의존성 추가build.gradle 파일에 다음 의존성을 추가합니다:dependencies { implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.6.0' }2단계: Swagger 관련 설정 추가Springdoc OpenAPI는 기본적으로 /swagger-ui/index.html 경로에서 API 문서를 제공합니다. 일반적인 설정은 추가로..
CORS (Cross-Origin Resource Sharing)
·
Spring
1. CORS란?CORS(Cross-Origin Resource Sharing)는 웹 브라우저 보안 정책으로, 특정 도메인에서 다른 도메인 리소스에 대한 요청을 제어합니다.브라우저는 기본적으로 Same-Origin Policy(동일 출처 정책)를 따르며, 다른 도메인의 리소스 요청을 차단합니다.동일 출처 정책: 요청의 프로토콜, 도메인, 포트가 동일해야 함.CORS는 이러한 제한을 완화할 수 있도록 서버에서 적절한 헤더를 설정하여 특정 출처(origin)에 대해 리소스 접근 권한을 부여합니다.2. CORS의 동작 흐름2.1 기본 요청 흐름클라이언트:브라우저가 XMLHttpRequest, Fetch API, 등의 방식으로 리소스를 요청.브라우저:요청이 다른 도메인(origin)으로 향할 경우 CORS 정..