Spring Data JPA 개요
·
Spring
Spring Data JPA 소개https://spring.io/projects/spring-data-jpa1. Spring Data JPA의 목적과 특징Spring Data JPA란?JPA를 더 쉽고 간단하게 사용할 수 있도록 도와주는 Spring 프레임워크의 하위 모듈입니다.JPA가 제공하는 표준 기능 외에도 반복적으로 사용되는 코드를 최소화하고, 간단한 방식으로 CRUD 작업을 구현할 수 있게 도와줍니다.Spring Data JPA의 주요 특징Repository 기반의 개발데이터를 조작하는 코드를 작성하지 않고도, JpaRepository 인터페이스만 상속하면 기본적인 CRUD 메소드가 자동으로 제공됩니다.메소드 이름으로 쿼리 생성findByName, findByAgeGreaterThan처럼 메소드..
JPA - JPQL (Java Persistence Query Language)
·
Spring
JPA 쿼리 방식쿼리 방식특징유리한 상황JPQL객체 지향 쿼리 언어, 데이터베이스 독립적.일반적인 쿼리, JPA 기본 기능 활용.Criteria API코드 기반 동적 쿼리, 타입 안전성 제공.동적 쿼리 작성 시.Native QuerySQL 직접 실행, 데이터베이스 종속적.복잡한 SQL 작성, 성능 최적화가 필요한 경우.Named Query엔티티에 미리 정의된 JPQL, 재사용 가능.자주 사용되는 JPQL을 미리 정의할 때.Spring Data JPA메서드 이름 기반 쿼리 생성 및 @Query를 활용.빠르고 간단한 쿼리 작성.QueryDSL타입 안전한 동적 쿼리 작성 가능, 코드 가독성 좋음.복잡한 동적 쿼리 작성.JDBC Template순수 SQL 실행, Spring에서 리소스 관리 제공.JPA 사용하지..
JPA - 연관관계 매핑
·
Spring
연관관계 매핑객체 모델과 관계형 모델의 차이객체 모델(Object Model): 객체 간의 관계는 참조(Reference)를 통해 연결됩니다.예: lecture.getInstructor() → 강의가 참조하는 강사 객체를 반환.관계형 모델(Relational Model): 테이블 간의 관계는 외래 키(Foreign Key)를 통해 연결됩니다.예: lecture 테이블의 instructor_id는 강사를 참조.멘탈 모델: 객체는 참조를 통해 관계를 표현하지만, 데이터베이스는 외래 키를 통해 관계를 표현한다는 점을 항상 염두에 둡니다.엔티티 간의 관계와 역할연관관계 매핑은 데이터베이스와 객체의 관계를 매핑하는 것이므로, 두 가지를 이해해야 합니다:연관 관계의 방향성단방향: 한쪽 엔티티에서만 관계를 정의.양방..
스프링 OAuth2 클라이언트 JWT 1 : 소셜 로그인 실습 목표
·
Spring Security/OAuth2
실습 목표OAuth2.0 클라이언트와 스프링 시큐리티 6 프레임워크를 활용하여 신뢰할 수 있는 외부 사이트(구글, 네이버)로부터 인증을 받고 전달 받은 유저 데이터를 활용하여 JWT를 발급하고 인가를 진행하는 방법. 인증 받은 데이터는 MySQL 데이터베이스를 활용하여 저장하고 관리한다.구현API 서버 형태로 구현.인증 : 네이버/구글 소셜 로그인 (코드 방식) 후 JWT 발급인가 : JWT를 통한 경로별 접근 권한인증 정보 DB 저장 후 추가 정보 기입버전 및 의존성Spring Boot 3.4.xSpring Security 6.2.2OAuth2 ClientLombokSpring Data JPA - MariaDBJWT 0.12.3Gradle - GroovyIntelliJ Ultimate기타OAuth2.0..
영속성 컨텍스트와 엔티티의 생명 주기
·
Spring
영속성 컨텍스트(Persistence Context)는 JPA(Java Persistence API)에서 핵심적인 개념으로, 엔티티(Entity) 객체를 관리하고 데이터베이스와의 상호작용을 조정하는 역할을 합니다. 영속성 컨텍스트는 메모리 내에서 엔티티를 관리하며, 데이터베이스와 직접적인 CRUD 작업을 효율적으로 처리합니다. 이 과정에서 엔티티의 상태(생명 주기)가 어떻게 변화하는지 이해하는 것이 중요합니다.영속성 컨텍스트란?영속성 컨텍스트(Persistence Context)는 JPA가 관리하는 엔티티 객체를 저장하고 관리하는 메모리 공간입니다. 간단히 말해, 엔티티의 상태를 추적하고 데이터베이스와 동기화하는 역할을 합니다.영속성 컨텍스트의 주요 특징1차 캐시영속성 컨텍스트는 1차 캐시로 동작하며, ..
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과 유사한 문법을 가진 객체 중심의 질의 언어.트랜잭션 관리트랜..