Backend 96

JPA 다양한 연관관계 매핑 개념(다중화, 일대일, 다대다, 다대일, 일대다)

📌 목차 1. 연관관계 매핑 시 고려사항 2. 다대일(N:1) 관계 3. 일대다(1:N) 관계 4. 일대일(1:1) 관계 5. 다대다(N:M) 관계6. 정리 ">📌 목차1. 연관관계 매핑 시 고려사항 2. 다대일(N:1) 관계 3. 일대다(1:N) 관계 4. 일대일(1:1) 관계 5. 다대다(N:M) 관계6. 정리 1. 연관관계 매핑 시 고려사항">1. 연관관계 매핑 시 고려사항JPA에서 연관관계를 매핑할 때는 3가지 요소를 고려해야 한다.1. 다중성(Multiplicity)다대일(@ManyToOne)일대다(@OneToMany)일대일(@OneToOne)다대다(@ManyToMany)2. 단방향 vs. 양방향단방향: 한쪽에서만 참조 가능양방향: 양쪽에서 참조 가능 (mappedBy 설정 필요)3. 연관관..

Backend/JPA 2025.02.21

JPA 연관관계 매핑 - 단방향과 양방향 연관관계 및 연관관계의 주인

📌 목차 1. 연관관계가 필요한 이유 2. 단방향 연관관계 3. 양방향 연관관계와 연관관계의 주인 4. 연관관계 매핑 실전 예제 5. 정리 ">📌 목차1. 연관관계가 필요한 이유 2. 단방향 연관관계 3. 양방향 연관관계와 연관관계의 주인 4. 연관관계 매핑 실전 예제 5. 정리 1. 연관관계가 필요한 이유">1. 연관관계가 필요한 이유조영호(『객체지향의 사실과 오해』)는 객체지향 설계의 목표는 자율적인 객체들의 협력 공동체를 만드는 것이라고 말한다.즉, 객체 간의 관계를 명확히 설정하여 객체들이 서로 원활하게 협력할 수 있도록 하는 것이 중요하다.객체와 테이블의 관계 차이비교 항목객체테이블연관관계 표현참조 필드(team) 사용외래 키(TEAM_ID) 사용탐색 방식객체의 참조(member.getTea..

Backend/JPA 2025.02.20

SSO(Single Sign-On)란? 개념과 프로토콜 비교

📌 목차 1. SSO(Single Sign-On)란? 2. SSO의 동작 방식 3. SSO의 주요 프로토콜 비교 4. SSO의 장점과 단점 5. SSO 사용 사례 6. SSO와 OAuth 2.0의 차이 7. 결론 및 구현 고려 사항 "> 📌 목차 1. SSO(Single Sign-On)란? 2. SSO의 동작 방식 3. SSO의 주요 프로토콜 비교 4. SSO의 장점과 단점 5. SSO 사용 사례 6. SSO와 OAuth 2.0의 차이 7. 결론 및 구현 고려 사항 1. SSO(Single Sign-On)란?"> 1. SSO(Single Sign-On)란? SSO(Single Sign-On)은 한 번의 로그인으로 여러 애플리케이션과 시스템에 접근할 수 있도록 하는 인증 방식이다.즉, 사용..

Backend 2025.02.19

JPA 기본 매핑 - 객체, 테이블, 컬럼 및 기본 키 매핑

📌 목차 1. 객체와 테이블 매핑 2. 데이터베이스 스키마 자동 생성 3. 필드와 컬럼 매핑 4. 기본 키 매핑 5. 정리 ">📌 목차1. 객체와 테이블 매핑 2. 데이터베이스 스키마 자동 생성 3. 필드와 컬럼 매핑 4. 기본 키 매핑 5. 정리 1. 객체와 테이블 매핑">1. 객체와 테이블 매핑객체와 테이블 매핑(Object-Relational Mapping, ORM)은 JPA를 사용하여 자바 객체를 데이터베이스의 테이블과 연결하는 것을 의미한다.이를 통해 개발자는 SQL을 직접 작성하지 않고도 객체 지향적인 방식으로 데이터를 관리할 수 있다.객체와 테이블 매핑을 위한 기본 어노테이션@Entity : JPA에서 관리하는 엔티티 객체로 지정@Table(name = "테이블명") : 특정 테이블과 매..

Backend/JPA 2025.02.19

HDFS WebHDFS API를 활용한 대용량 파일 다운로드 구현 (Spring Boot + Vue.js 예제)

📌 목차 1. HDFS WebHDFS란? 2. HDFS WebHDFS API를 활용한 파일 다운로드 개요 3. Spring Boot에서 HDFS 파일 다운로드 구현 4. Vue.js 프론트엔드에서 파일 다운로드 처리 5. 정리 및 최적화 고려 사항 ">📌 목차1. HDFS WebHDFS란? 2. HDFS WebHDFS API를 활용한 파일 다운로드 개요 3. Spring Boot에서 HDFS 파일 다운로드 구현 4. Vue.js 프론트엔드에서 파일 다운로드 처리 5. 정리 및 최적화 고려 사항  1. HDFS WebHDFS란?">1. HDFS WebHDFS란?WebHDFS는 HTTP 프로토콜을 사용하여 HDFS에 접근할 수 있도록 하는 API다.이를 활용하면 Java의 Hadoop 라이브러리를 직접 ..

JPA - 영속 상태와 준영속 상태의 차이 및 준영속 상태 만드는 방법

📌 목차 1. 영속(Persistent) 상태란? 2. 준영속(Detached) 상태란? 3. 영속 상태와 준영속 상태의 차이 4. 준영속 상태 만드는 방법 5. 준영속 상태의 활용 예시 6. 정리 ">📌 목차1. 영속(Persistent) 상태란? 2. 준영속(Detached) 상태란? 3. 영속 상태와 준영속 상태의 차이 4. 준영속 상태 만드는 방법 5. 준영속 상태의 활용 예시 6. 정리 1. 영속(Persistent) 상태란?">1. 영속(Persistent) 상태란?**영속 상태(Persistent State)**란, JPA의 영속성 컨텍스트에 의해 관리되는 엔티티 객체 상태를 의미한다.즉, 엔티티가 EntityManager의 관리 하에 있으며, 변경 사항이 자동으로 DB에 반영되는 상태이..

Backend/JPA 2025.02.12

JPA - flush()란?

flush()는 영속성 컨텍스트의 변경 사항(INSERT, UPDATE, DELETE 등)을 즉시 데이터베이스에 반영하는 동작을 의미한다.즉, 쓰기 지연 SQL 저장소(Batch SQL Storage)에 쌓인 SQL을 강제로 실행하여 DB에 반영하는 기능이다. 📌 목차 1. JPA의 flush()란? 2. JPA의 자동 Flush 시점 3. flush()와 clear() 차이 4. flush() 모드 설정 5. flush() 활용 예시 6. 정리 ">📌 목차1. JPA의 flush()란? 2. JPA의 자동 Flush 시점 3. flush()와 clear() 차이 4. flush() 모드 설정 5. flush() 활용 예시 6. 정리 1. JPA의 flush()란? ">1. JPA의 flush()란..

Backend/JPA 2025.02.12

JAVA - 조건에 따라 검색된 엔티티 중 가장 높은 PK 값을 가진 엔티티 찾기

데이터 리스트에서 특정 조건을 만족하는 엔티티 중 가장 높은 PK 값을 가진 엔티티를 찾는 방법은 여러 가지가 있습니다. 특히 Java Stream API, Collections, Comparator, Spring Data JPA, 그리고 Querydsl을 활용하면 효율적으로 최댓값을 가진 엔티티를 찾을 수 있습니다.이번 글에서는 조건을 추가하여 최댓값을 가진 엔티티를 찾는 방법을 정리해보겠습니다.1. Java Stream API 활용 (가장 간결한 방법)Optional maxEntity = list.stream() .filter(entity -> entity.getStatus().equals("ACTIVE")) // 특정 조건 적용 .max(Comparator.comparing(Entity..

Backend 2025.02.11

JPA - 영속성 컨텍스트 (Persistence Context) 특징

영속성 컨텍스트(Persistence Context)는 JPA에서 엔티티 객체를 관리하는 공간(1차 캐시)으로, 엔티티의 상태를 추적하고 변경 사항을 자동으로 데이터베이스에 반영하는 역할을 한다.JPA의 핵심 개념 중 하나이며, EntityManager에 의해 관리된다. 영속성 컨텍스트의 주요 특징① 엔티티 생명주기 관리영속성 컨텍스트는 엔티티 객체를 다음과 같은 4가지 상태로 관리한다.상태설명 비영속 (New, Transient) 영속성 컨텍스트에 관리되지 않는 객체 (DB와 연결 X)영속 (Managed, Persistent)영속성 컨텍스트에 의해 관리되는 객체 (변경 감지 O)준영속 (Detached)영속성 컨텍스트에서 분리된 객체 (변경 감지 X)삭제 (Removed)삭제가 예약된 상태 (DB에서..

Backend/JPA 2025.02.11

Spring 메시지, 국제화 개념

메시지 국제화 정리Spring에서 메시지와 국제화를 쉽게 관리할 수 있는 기능을 제공메시지와 국제화는 다국어 지원 애플리케이션을 개발 가능케 함.1. 메시지 소스 설정Spring에서 메시지를 관리하기 위해 MessageSource 인터페이스를 사용일반적으로 ResourceBundelMessageSource를 빈으로 설정하여 사용예) application.properties 설정propertiesspring.messages.basename=messagesspring.messages.encoding=UTF-8Java@Configurationpublic class AppConfig { @Bean public MessageSource messageSource() { ResourceBundleMess..