- [Spring] Spring Security 기본 개념(JWT / OAuth 2.0 / 동작방식 / 구성요소)2023-11-06 23:49:25이번엔 Spring Security의 기본 개념에 대해 공부했다. 1. JWT(Jason Web Token) 유저 인증, 식별하기 위한 토큰 기반의 인증에 쓰인다. - 구조 헤더(Header) 타입(Type) : 항상 JWT 알고리즘(alg) 페이로드 (Payload) : 사용자 정보 담김 서명 (Verify Signature) - 동작 방식 클라이언트 측에서부터 서버 측으로 JWT 받음 서버 측의 비밀 값과 JWT의 헤더, 페이로드를 alg에 넣고 서명값과 같은지 확인 같다면 유저에 인가한다. - 특징 시간에 따라 상태 값이 달라지지 않음(Stateless) 서버가 통제하지 않아 여러 사용자가 같은 JWT로 여러 요청 보내도 추적 불가능 - 종류 Access Token : 인가받았을 때 쓰는 수명이 짧..
- [Spring] EntityNotFoundException 이란?2023-11-02 01:50:011. 사용 예시 이번 글은 Spring에서 데이터베이스에 있는 데이터를 조회하는 경우 해당 데이터가 없을 때 발생시킬 예외 중 하나를 소개하겠다. 전에는 존재하지 않는 데이터를 조회하는 예외처리를 할 때마다 NoSuchElementExeption만 사용했었다. 위와 같은 경우에서 예외를 처리하는 권장 방법 중 하나는 커스텀 예외를 발생시키는 것이다. 2. 예외 발생 방법 Spring.io를 보면, 이런 경우에 대한 권장 커스텀 예외가 바로 EntityNotFoundException이다. 이 예외는 일반적으로 데이터베이스에서 리소스를 찾을 수 없을 때 사용된다. 이 예외는 java.persistence 패키지의 일부로서 쿼리에서 결과가 없을 때 레포지토리 레이어에서 발생시킬 수 있다. Spring Data..
- [JPA] 매핑 어노테이션2023-10-20 16:10:57오늘은 엔티티 내 필드에서 매핑컬럼에 대한 특성을 지정할 수 있는 매핑 어노테이션을 알아보겠다. @Column @Enumerated @Temporal @Lob @Transient @Column name @Column(name = "컬럼명") 필드와 매핑할 테이블의 컬럼명을 지정한다. 기본값 : 필드명 @Column private String name //컬럼명 : name(필드명) @Column(name="member_name") private String name //컬럼명 : member_name insertable, updatable 필드 값 수정 시 DB에 반영할 지 여부 @Column(insertable = false) : 엔티티 저장 시 이 필드는 DB에 저장하지 않는다. @Column(upd..
- [Spring Data JPA] 파라미터 바인딩2023-10-19 00:21:44포트폴리오 작성을 위해 웹을 만들고 있는 도중 JPA에 회원 이메일을 통해 회원을 조회하고 싶은데 @Query문에 파라미터를 어떤 식으로 작성하는지 몰라 찾아보다 알게 되었다. 스프링 데이터 JPA는 2가지 방법으로 파라미터 바인딩을 지원한다. 위치기반 이름기반 SELECT m FROM Member m WHERE m.email = ?0 //위치 기반 SELECT m FROM Member m WHERE m.email = :email //이름 기반 스프링 데이터 JPA의 기본값으로는 위치 기반 파라미터 바인딩이다. 이름 그대로 파라미터 순서로 바인딩하는 것이다. 코드 가독성과 유지보수를 위해 위치 기반보다는 이름 기반을 사용하게 한다. 위치 기반은 순서 실수가 있을 수 있기 때문이다. 공식 문서를 보면 알 ..