Spring

[JWT를 활용한 일반 로그인 API 구현] 과정을 기록해보려고 한다. 프로젝트 개발 환경은 아래와 같다.Java: 17JDK: 17.0.6IDE: IntelliJ IDEA 2024.1Framework: Spring Boot 3.3.1 Spring Security의 구조(Filter)와 인증(Authentication) 구조에 대한 설명은 아래 글을 참고하자. [Spring Security] Spring Security의 구조(Filter) 이해하기[JWT를 활용한 로그인, 로그아웃, 회원탈퇴 API 구현 방법]에 대해 설명하기 전, 공식 문서를 보면서 Spring Security의 기본 개념(Filter)에 대해 학습해보려고 한다. API를 구현할 때 사용한 자바, 스프dev-meung.tistory...
1. 연관관계 매핑 시 고려사항 3가지다중성JPA가 다중성에 맞는 4가지 애노테이션을 제공한다. DB 관점에서의 다중성을 기준으로 고민하면 된다. 헷갈린다면 반대의 상황을 생각해 보자. 예를 들어 회원과 팀의 관계가 헷갈린다면, 팀과 회원의 관계로 다시 생각해 보면 된다. 대칭성이 있기 때문에 반대로 생각해 보면 더 이해하기 쉬워지기도 하기 때문이다.다중성(차수)애노테이션다대일 [N:1]@ManyToOne일대다 [1:N]@OneToMany일대일 [1:1]@OneToOne다대다 [N:M]@ManyToMany 참고'다대다 [N:M]'는 실무에서 쓰면 안 된다. 단방향 & 양방향저번 섹션에서 객체와 테이블의 연관관계를 맺는 방법의 차이에 대해 학습했다.객체참조용 필드가 있는 쪽으로만 참조 가능한쪽만 참조하면 ..
[JWT를 활용한 일반 로그인 API 구현] 과정을 기록해보려고 한다. 프로젝트 개발 환경은 아래와 같다.Java: 17JDK: 17.0.6IDE: IntelliJ IDEA 2024.1Framework: Spring Boot 3.3.1 JWT에 대한 설명은 아래 글을 참고하자. [팀 프로젝트] 하루치(HARUCHI) - 쿠키(Cookie)와 세션(Session), 토큰(Token) 차이 & JWT(JSON Web Token)JWT를 활용한 인증 및 인가(로그인, 로그아웃, 회원탈퇴) 기능 구현 방법에 대해 작성하기 전, 기본 개념부터 정리해두려고 한다. 사실 완벽하게 이해하고 구현했다기보단 최소한의 필요한 게 뭔dev-meung.tistory.com Spring Security의 구조(Filter)와 인..
이번 섹션에선 객체와 테이블의 연관관계 차이를 이해한 뒤, 객체의 참조와 테이블의 외래 키를 매핑하는 방법에 대해 학습한다. 아래에 있는 핵심 용어만 잘 이해해 두면 된다.방향(Direction): 단방향, 양방향다중성(Multiplicity): 다대일(N:1), 일대다(1:N), 일대일(1:1), 다대다(N:M)💫연관관계의 주인(Owner): 객체 양방향 연관관계는 관리 주인이 필요함 1. 연관관계의 필요성객체지향스러운 설계를 이해하기 위해 아래 책(객체지향의 사실과 오해)과 를 참고하면 좋다.객체지향 설계의 목표는자율적인 객체들의 협력 공동체를 만드는 것이다.- 조영호(객체지향의 사실과 오해) - 객체의 참조와 테이블의 외래 키아래와 같은 예제 시나리오를 생각해 보자.1. 회원과 팀이 존재한다.2...
1. 객체와 테이블 매핑@Entity@Entity 애노테이션이 붙은 class는 JPA가 관리하며, 엔티티라고 한다. 따라서 JPA를 사용해서 테이블과 매핑할 class는 해당 애노테이션을 필수로 붙여야 한다. 아래는 JPA 스펙상 꼭 지켜야 할 주의사항이다.기본 생성자(파라미터가 없는 public 또는 protected 생성자)가 필수로 있어야 한다.JPA 리플렉션 등의 기술을 써서 객체를 프록시하는 경우에 필요하기 때문이다.final class, enum, interface, inner class엔 사용할 수 없다.내가 DB에 저장할 필드에 final을 사용하면 안 된다.@Entity(name = "Member") // 기본값 Memberpublic class Member { ...} 속성 정리..
이전 글에서 Spring Security가 Filter를 통해 요청을 처리하는 방식에 대해 학습했다. 이번엔 아래 글을 바탕으로 Spring Security의 인증(요청에 따라 사용자의 신원을 확인하는 방식) 기능에 대해 알아보려고 한다. [Spring Security] Spring Security의 구조(Filter) 이해하기[JWT를 활용한 로그인, 로그아웃, 회원탈퇴 API 구현 방법]에 대해 설명하기 전, 공식 문서를 보면서 Spring Security의 기본 개념(Filter)에 대해 학습해보려고 한다. API를 구현할 때 사용한 자바, 스프dev-meung.tistory.com API를 구현할 때 사용한 자바, 스프링 부트, 라이브러리 버전은 아래와 같다.Java: 17Spring Boot: ..
1. 영속성 컨텍스트객체와 관계형 데이터베이스를 매핑(ORM)하는 것과 영속성 컨텍스트를 이해하는 것이 JPA 공부의 핵심이다. 영속성 컨텍스트를 이해하면 JPA가 내부에서 어떻게 동작하는지 이해할 수 있다. 영속성 컨텍스트란 엔티티를 영구적으로 저장하는 환경이라는 뜻이다. 예를 들어 EntitiyManager.persist(entity); 코드를 통해 엔티티를 영속화(영속성 컨텍스트에 저장)할 수 있다. 아래에서 더 자세히 알아보자.  엔티티 매니저 팩토리와 엔티티 매니저웹 애플리케이션을 개발한다고 하면, 고객의 요청이 올 때마다 EntityManagerFactory를 통해 EntityManager를 생성해 배치한다. EntityManager는 내부적으로 데이터베이스 커넥션풀을 사용해 DB와 통신한다...
[JWT를 활용한 로그인, 로그아웃, 회원탈퇴 API 구현 방법]에 대해 설명하기 전, 공식 문서를 보면서 Spring Security의 기본 개념(Filter)에 대해 학습해보려고 한다. API를 구현할 때 사용한 자바, 스프링 부트, 라이브러리 버전은 아래와 같다.Java: 17Spring Boot: 3.3.1Spring Security: 6.1.9 → 공식 문서 버전도 동일 Spring Security 기본 개념Spring Security란?Spring Security는 인증 및 인가, 보안을 위해 사용하는 프레임워크로, 자바 8 이상인 환경에서만 동작한다. build.gradle 의존성에 아래 한 줄을 추가하면 사용할 수 있다.추가하고 localhost:8080에 접속하면 로그인 화면이 뜨게 된다..
[스프링 부트와 JPA 활용1] 강의는 원래 이번 강의를 듣고 이론을 학습한 뒤 실습을 진행하는 내용이다. 추천 로드맵을 보면 실습 - 이론 - 실습(복습)으로 진행하는 게 더 효율적이라길래 따라하고 있다. 이번 섹션에선 JPA 이론을 학습하기 전, JPA의 필요성과 기능에 대해 설명한다. JPA와 모던 자바 데이터 저장 기술 1. SQL 중심적인 개발의 문제점SQL에 의존하는 개발애플리케이션을 개발할 땐 보통 Java나 Scala, C# 같은 객체 지향 언어를 사용하고, Oracle이나 MySQL 같은 관계형 데이터베이스(RDB)에 데이터를 저장한다.객체를 영구 보관하는 저장소는 RDB 말고도 NoSQL, File 등으로 다양하다. 그러나 현실적인 대안으로는 주로 RDB를 사용한다.객체를 RDB에 저장..
이후 섹션들은 라이브 코딩을 따라하면서 회원, 상품, 주문 도메인과 웹 계층을 개발하기 때문에 강의 중 새롭게 학습한 개념이나 실무에 적용할 수 있는 팁들만 작성하려고 한다. 1. 도메인 개발화면(웹 계층) 개발은 뒤로 미루고 핵심 비즈니스 로직부터 개발한다. 리포지토리 - EntityManager@PersistentContext 애노테이션을 사용하면 스프링이 알아서 SpringEntityManger를 주입해 준다. @Autowired 애노테이션을 적어도 가능하다. em.persist()영속성 컨텍스트에 저장, 트랜잭션이 커밋되는 시점에 DB에 반영(INSERT), Key:Value=PK:Entityem.find()타입과 PK를 파라미터로 받는 조회 메서드em.createQuery()JPQL과 타입을 넣..
dev-meung
'Spring' 태그의 글 목록 (2 Page)