BackEnd 12

[JPA] JPA의 다양한 연관관계 매핑 (다대일, 일대다, 일대일, 다대다)

엔티티의 연관관계를 매핑할 때, 다중성, 단방향/양방향, 그리고 연관관계의 주인을 고려해야 합니다.이를 바탕으로 모든 연관관계 유형을 정리하겠습니다. 01 다대일 (Many-to-One)1. 다대일 단방향 [N:1]다수의 엔티티가 하나의 엔티티와 연관되는 관계입니다.단방향으로 설정하면 하나의 엔티티에서만 참조할 수 있습니다.여러 회원이 하나의 팀에 소속된 상황을 예로 들 수 있습니다.@Entitypublic class Member { @ManyToOne @JoinColumn(name = "team_id") // 외래 키 컬럼 private Team team;}@Entitypublic class Team { @Id private Long id; private String n..

BackEnd/JPA 2025.02.02

[Spring] Spring Security + JWT 구현하기

RESTful API와 같이 상태를 유지하지 않는 아키텍처에서 클라이언트와 서버 간의 인증 상태를 효율적으로 관리하는 것이 매우 중요합니다.이때 널리 사용되는 인증 방식 중 하나가 JWT입니다.JWT는 가볍고 자체적으로 필요한 정보를 포함하고 있어, 세션 관리가 필요 없는 환경에서 유리합니다.이를 통해 인증 상태를 클라이언트가 보관하고, 서버는 각 요청에서 JWT를 검증하여 인증을 처리할 수 있습니다.이번 글에서는 Spring Security와 JWT를 활용하여 인증 시스템을 구축하는 방법을 정리해보겠습니다.1. JWT란?JWT (JSON Web Token)는 JSON 기반의 토큰으로, 클라이언트와 서버 간에 인증 및 정보 교환에 사용됩니다.JWT는 다음과 같은 특징을 가지고 있습니다:세션을 사용하지 않..

BackEnd/Spring 2024.12.21

[JPA] JPA 엔티티 기본 매핑 어노테이션 완벽 정리

01 엔티티 매핑이란?JPA에서 엔티티는 데이터베이스 테이블과 매핑되는 객체입니다.엔티티 매핑은 객체 중심의 프로그래밍과 관계형 데이터베이스의 데이터를 연결하는 핵심 요소로, 객체와 테이블 간의 매핑을 설정해줍니다.이를 통해 개발자는 SQL을 직접 작성하지 않고도 객체를 통해 데이터베이스를 다룰 수 있습니다.이번 글에서는 기본적인 매핑 어노테이션을 정리해보겠습니다.02 @Entity와 @Table1. @Entity@Entity는 JPA에서 엔티티 클래스를 정의하는 데 사용됩니다. 이 어노테이션이 선언된 클래스는 데이터베이스 테이블과 매핑됩니다.속성name : JPA에서 사용할 엔티티 이름을 지정합니다. 기본값은 클래스 이름과 동일합니다.주의사항기본 생성자가 반드시 필요합니다.final, enum, int..

BackEnd/JPA 2024.12.20

[Docker] 도커를 시작해야 하는 이유

소프트웨어 개발에 있어 다양한 환경에서 일관되게 동작하는 애플리케이션을 만들기는 어렵습니다.이러한 문제를 해결하기 위해 등장한 도구가 바로 "도커"입니다.도커는 컨테이너 기술을 기반으로 애플리케이션의 개발, 배포, 실행을 편리하게 만들어줍니다.이 글에서는 도커가 무엇인지, 도커를 배워야 하는 이유, 그리고 도커가 가져온 혁신에 대해 알아보겠습니다.01 컨테이너란 무엇인가?도커는 컨테이너 기술을 기반으로 하는 도구입니다.컨테이너란 애플리케이션과 해당 애플리케이션의 실행에 필요한 라이브러리, 종속성, 설정 파일 등을 패키지화한 가상화 기술입니다.이를 통해 컨테이너는 어떤 환경에서도 동일하게 실행될 수 있습니다.컨테이너 이전에 사용되던 가상머신(VM)과 비교해볼 수 있는데,VM은 OS 전체를 포함한 무거운 구..

BackEnd/Docker 2024.12.18

[JPA]JPA와 영속성 컨텍스트

JPA는 객체와 데이터베이스 사이에서 데이터를 효율적으로 관리해주는 기술입니다.이때 핵심 역할을 하는 것이 영속성 컨텍스트입니다.영속성 컨텍스트는 엔티티를 저장하고 관리하는 메모리 공간으로, 객체의 상태를 추적하고 데이터베이스와의 동기화를 돕습니다.이 글에서는 영속성 컨텍스트의 개념과 엔티티의 생명주기, 그리고 1차 캐시, 변경 감지, 쓰기 지연 등 주요 특징을 정리해보겠습니다.01 엔티티 매니저 팩토리와 엔티티 매니저지난번 JPA를 시작하며 엔티티 매니저 팩토리를 통해 엔티티 매니저를 생성하는 과정을 거쳤습니다.//엔티티 매니저 팩토리 생성EntityManagerFactory emf = Persistence.createEntityManagerFactory("jpabook");//엔티티 매니저 생성Ent..

BackEnd/JPA 2024.12.17

[JPA] SpringBoot + JPA 시작하기

JPA는 자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스입니다.즉, 구현을 하기 위해서는 라이브러리를 선택해야 하는 것입니다.일반적으로 JPA에서는 Hibernate를 구현체로 선택하는 경우가 많습니다.그러나 반드시 Hibernate를 사용할 필요는 없습니다!!01 의존성 주입하기스프링 프로젝트에 JPA를 적용하기 위해서는 의존성 주입이 필요합니다.MVN Repository에서 Spring boot starter data jpa와 Mysql connector를 가져옵니다.1. Spring Data JPA스프링부트 버전에 맞추어 자동으로 JPA 관련 라이브러리들의 버전을 관리해주는 라이브러리입니다. org.springframework.boot sprin..

BackEnd/JPA 2024.12.13

[JPA] JPA를 배워야 하는 이유는? SQL Mapper vs ORM

스프링으로 개발을 시작할 때 처음에는 새로고침하거나 프로그램을 다시 실행하면데이터가 사라지는 사이트를 만들어본 경험이 있을 것입니다.이 문제를 해결하기 위해 프로그램과 데이터베이스를 연결해야 합니다. 저는 처음 DB를 학습할 때 SQL 쿼리 작성 방법을 배우고MyBatis를 통해 MySQL과 연결하는 방법으로 프로그램을 만들었습니다.이때 사용한 MyBatis와 같은 기술을 Persistence Framework라고 합니다.오늘은 Persistence Framework의 종류를 정리하고 비교해보려고 합니다. 1. Persistence Framework란?어떤 종류가 있는지 알아보기에 앞서 Persistence Framework가 무엇인지 정리해봅시다.Persistence = 영속성프로그램이 종료되더라도 사..

BackEnd/JPA 2024.12.10

[Spring] 스프링부트 REST API 관련 Annotation

REST란?REpresentational State Transfer웹에서 컴퓨터 간 표준을 제공하는 아키텍처 스타일로 6가지 특징이 있다. 1. 균일한 인터페이스2. 클라이언트-서버 분리3. 무상태4. 캐시 가능성5. 계층화된 시스템 아키텍처6. 코드 온디맨드 즉, RESTful한 설계란, 클라이언트와 서버가 서로 독립적이며 서로에게 영향을 주지 않아야 한다.또한 각 요청에 필요한 정보를 포함하여 무상태성을 유지해야 한다.이러한 원칙에 따라 설계한 API가 REST API이다. REST의 구성 요소에는 자원(resource), HTTP 메서드, 표현(representation)이 있다.- 자원 : URI (Uniform Resource Identifier)로 경로를 구분한다.- HTTP 메서드 : CRU..

BackEnd/Java 2024.11.04

[Spring] 스프링 의존성 주입 Dependency Injection 총정리

의존성 주입이란? 프로그램 디자인이 결합도를 느슨하게 되도록하고 의존관계 역전 원칙과 단일 책임 원칙을 따르도록 클라이언트의 생성에 대한 의존성을 클라이언트의 행위로부터 분리하는 것- 위키 백과 즉, 다른 클래스의 기능을 사용하기 위해 생성자를 직접 호출하는 대신컨테이너를 통해 연관 관계를 규정하여 결합을 약하게 하는 것!클래스들 간의 연관 관계를 갖지 않도록, 서로가 영향을 주지 않도록 하는 것이다. 만약 의존성 주입을 하지 않은 코드의 경우에는클래스끼리 서로 연관관계가 있어 하나의 클래스를 수정했을 때그와 연관이 있는 다른 클래스에서도 수정이 일어나야 한다. 이러한 문제를 해결하기 위해서는 인터페이스를 적용하여각 클래스를 구현하고 객체를 사용할 때 인터페이스로 타입을 선언할 수 있지만여전히 일부 클래..

BackEnd/Spring 2024.10.11

[Java / 백준] 1000번 A+B, Scanner로 입력 받기, 파이썬과 자바의 입력 비교하기

쏘 심플한 오늘의 문제..파이썬으로 첫 문제를 풀었던 이 문제로 자바 알고리즘을 시작했다.입력 받기부터 어려워서 개념을 정리해보기로! 풀이Scanner를 사용해서 두 수를 받아주고두 수를 더한 값을 출력하면 된다. 코드import java.util.*;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int a, b; a = sc.nextInt(); b = sc.nextInt(); System.out.println(a+b); }} 자바 Scanner자바의 스캐너는 java.util패키지 안에서 찾을 수 있는 클래스로메서드를 사용해서 Boolean, ..

BackEnd/Java 2024.07.09