Spring/강의 52

[📘 심화 Spring] 2-1. JPA 연관관계 매핑

📘 목차연관관계 매핑1 : N 연관관계1 : 1 연관관계N : M 연관관계상속관계 매핑1. 연관관계 매핑 연관관계의 종류 관계 타입N:1 (ManyToOne)1:N (OneToMany)1:1 (OneToOne)N:M (ManyToMany)방향성단방향: 한쪽 엔티티만 상대 엔티티를 참조양방향: 양쪽 엔티티가 서로를 참조 주요 어노테이션 관계 타입 어노테이션 비고 N : 1@ManyToOne가장 많이 사용됨1 : N@OneToMany 1 : 1@OneToOne N : M@ManyToMany신중하게 사용 권장 단방향과 양방향 연관관계테이블 관점외래 키(FK) 하나로 두 테이블 간 JOIN 가능객체 관점단방향: 외래키가 있는 쪽 엔티티만 상대 엔티티를 참조 가능양방향: 두 엔티티 모두 서로를 참조..

Spring/강의 2025.06.09

[📘 심화 Spring] 1. Converter, Formatter

📘 목차HttpMessageConverterArgumentResolverReturnValueHandlerTypeConverterConverterConversionServiceConverter 적용 (실습)FormatterSpring Formatter1. HttpMessageConverter HttpMessageConverterHTTP 요청(Request) 또는 응답(Response)의 바디(body)를 자바 객체로 변환하거나, 자바 객체를 HTTP 메시지 바디로 변환하는 역할을 한다.JSON, XML, 바이너리 데이터 ↔ 자바 객체 역할컨트롤러 메서드의 @RequestBody, @ResponseBody 처리를 담당클라이언트와 서버 간 데이터 직렬화/역직렬화 담당 주요 구현체 MappingJackso..

Spring/강의 2025.06.09

[📙 숙련 Spring] 3-5. Spring Data JPA 실습

📙 목차요구사항회원 생성 기능특정 회원 조회 기능비밀번호 수정 기능게시글 생성 기능게시글 전체 조회 기능특정 게시글 조회 기능특정 게시글 삭제 기능1. 요구사항게시판 프로젝트회원 관련 기능1. 회원 생성 기능 C2. 특정 회원 조회 기능 R3. 비밀번호 수정 기능 U게시판 관련 기능1. 게시글 생성 기능 C2. 게시글 전체 조회 기능 R3. 특정 게시글 조회 기능 R (작성자 나이 포함)4. 특정 게시글 삭제 기능 D모든 데이터 통신은 JSON을 사용한다. 3-4. Entity 설계 실습 이어서 진행 https://github.com/gajicoding/spring-jpa-board/tree/v1.1.0 GitHub - gajicoding/spring-jpa-boardContribute to gajic..

Spring/강의 2025.05.21

[📙 숙련 Spring] 3-4. Entity 설계 실습

📙 목차요구사항프로젝트 준비BaseEntity 설계 및 적용하기회원(Member) Entity 설계하기게시글(Board) Entity 설계하기연관관계 설정하기1. 요구사항게시판 프로젝트회원(Member)로그인에 사용할 아이디 : 필수, 유일로그인에 사용할 비밀번호 : 필수나이생성 시간수정 시간게시글(Board)제목 : 필수내용 : 긴 텍스트생성 시간수정 시간연관관계한명의 회원은 여러개의 게시글을 작성할 수 있다. (단방향)2. 프로젝트 준비프로젝트 생성 Database 준비board 스키마 생성 JPA 관련 설정# application.properties# DataSource 설정spring.datasource.url=jdbc:mysql://localhost:3306/boardspring.datas..

Spring/강의 2025.05.21

[📙 숙련 Spring] 3-3. Spring Data JPA

📙 목차Spring Boot와 JPA Spring Data JPASimpleJpaRepositoryQuery MethodsJPA AuditingJPA Auditing 적용하기1. Spring Boot와 JPASpring Boot는 JPA 설정을 자동으로 구성하여 JPA를 쉽게 사용할 수 있도록 도와준다. 기존 코드직접 트랜잭션을 사용한다.(JPA는 기본적으로 하나의 트랜잭션 안에서 기능을 수행한다)직접 EntityManagerFactory 와 EntityManager 를 생성하여 사용한다.직접 close() 하여 연결을 종료 해야한다.public static void main(String[] args) { // EntityManagerFactory 생성 EntityManagerFactory..

Spring/강의 2025.05.21

[📙 숙련 Spring] 3-2. JPA Entity 만들기

📙 목차@Entity@TableDDL 자동 생성 (hibernate.hbm2ddl.auto)EntityManager를 사용한 JPA 실행 예필드 매핑기본 키(PK) 연관관계 Mapping1. @Entity @Entity JPA가 관리하는 Entity 클래스임을 선언하는 어노테이션이다.반드시 기본 생성자와 PK(@Id) 필드를 포함해야 한다.클래스명과 동일한 이름이 Entity 이름 기본값이며, @Entity(name = "CustomName")으로 변경 가능하다.사용할 수 없는 대상: final, enum, interface, inner 클래스, 그리고 final 필드.@Entity(name = "Tutor") // 기본 값, name 속성은 생략하면 된다.@Table(name = "tutor")pub..

Spring/강의 2025.05.21

[📙 숙련 Spring] 3-1. JPA

📙 목차패러다임 불일치(Paradigm Mismatch)JPAJPA 사용 이유 영속성 컨텍스트1. 패러다임 불일치(Paradigm Mismatch) 패러다임 불일치(Paradigm Mismatch) 객체 지향 프로그래밍(Object-Oriented Programming)과 관계형 데이터베이스(Relational Database)가 서로 다른 설계 철학과 구조를 가지고 있기 때문에 이 둘을 연결할 때 생기는 구조적·개념적 충돌을 의미한다.객체는 클래스와 참조, 캡슐화, 상속, 다형성 등 객체 지향 개념을 따르지만RDB는 테이블, 외래 키, 정규화, SQL 등 관계형 모델을 기반으로 동작한다.이러한 차이로 인해, 객체를 RDB에 저장하거나 불러올 때 반복적인 SQL 작성, JOIN 처리, 객체 조립, 동일..

Spring/강의 2025.05.20

[📙 숙련 Spring] 2-4. Filter

📙 목차공통 관심 사항(cross-cutting concerns)Servlet FilterServlet Filter 구현 방법Servlet Filter 구현 및 등록 예제[실습]1. 공통 관심사(cross-cutting concerns)공통 관심사(cross-cutting concerns, 횡단 관심사 )비즈니스 로직과는 별개로 여러 기능에서 공통적으로 필요한 처리 로직여러 클래스나 모듈에서 반복적으로 사용되는 부가적인 기능 비즈니스 로직에 직접 넣으면 중복 코드, 관심사 분리 실패, 유지보수 어려움 등의 문제가 발생한다. ex. 인증, 인가, 로깅, 인코딩 처리 등@PostMapping("/post")public PostResponseDto create(PostCreateRequestDto reque..

Spring/강의 2025.05.20

[📙 숙련 Spring] 2-3. Token, JWT(JSON Web Token)

📙 목차TokenAccess Token, Refresh TokenJWT(JSON Web Token)JWT 사용 간단 예제1. TokenToken (토큰)사용자의 신원을 증명하거나 권한을 부여하기 위해 발급되는 디지털 증명서 같은 문자열주로 인증(Authentication)과 인가(Authorization) 과정에서 사용된다.토큰은 보통 암호화되어 안전하게 정보를 담고 있으며, 만료시간이 설정되어 있다.대표적인 예, JWT(JSON Web Token) Token 동작 순서서버가 사용자 로그인 후 고유한 토큰을 생성해 클라이언트에게 전달한다.서버가 아닌 클라이언트에 저장되어 서버의 부담을 덜 수 있다.클라이언트는 이후 요청 시 이 토큰을 함께 보내어 서버가 사용자를 식별하고 권한을 확인할 수 있게 한다. ..

Spring/강의 2025.05.16

[📙 숙련 Spring] 2-2. Cookie, Session

📙 목차CookieCookie 사용 예제SessionSession 사용 예제 1 - ServletSession 사용 예제 2 - Spring1. CookieCookie (쿠키)웹 서버가 사용자의 웹 브라우저에 저장하는 작은 데이터 조각클라이언트와 서버 간의 상태 정보를 유지하거나 추적하기 위해 사용된다. Cookie 특징사용자의 상태 정보(예: 로그인 정보, 설정 값 등)를 클라이언트 측에 저장한다.HTTP가 기본적으로 상태 비저장(stateless)이기 때문에, 상태 유지를 위해 사용한다.서버가 응답 헤더에 Set-Cookie를 보내면, 브라우저가 이를 저장하고 이후 요청 시 Cookie 헤더로 함께 전송한다. Cookie 기본 구조 (HTTP Header 기준)Set-Cookie: =; ; ; ....

Spring/강의 2025.05.16