본문 바로가기

전체 글252

JPA 영속성 컨텍스트 * 영속성 컨텍스트란 ? 엔티티를 영구 저장하는 환경. 애플리케이션과 데이터베이스 사이에서 객체를 보관하는 가상의 데이터베이스 역할을 함. 엔티티 매니저를 통해 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리한다. em.persist(member); // 엔티티 매니저를 사용해 회원 엔티티를 영속성 컨텍스트에 저장한다는 의미. - 영속성 컨텍스트의 특징 1. 엔티티 매니저를 생성할 때 하나 만들어진다. 2. 엔티티 매니저를 통해서 영속성 컨텍스트에 접근하고 관리할 수 있다. 엔티티의 생명주기 비영속(new/transient) : 영속성 컨텍스트와 전혀 관계가 없는 상태 영속(managed) : 영속성 컨텍스트에 저장된 상태 준영속(detached) : 영속성 컨텍스트.. 2023. 11. 30.
GiftFunding) Spring Boot와 Redis를 활용한 Resfresh Token 구현 기존 Access Token 방식의 문제점 JWT를 기반으로 유효한 사용자가 로그인을 하면 토큰을 내려주고 권한이 필요한 접근에 대해서 header에 토큰을 포함해서 동작을 할 수 있다. 여기서 토큰은 세션과 다르게 stateless하다. == 서버가 상태를 보관하지 않는다. 따라서 한 번 발급한 토큰이 탈취되어도 서버에서는 토큰 만료시까지 기다리는 것 말고는 별다른 조치를 할 수가 없다. - Refresh Token ? ) 똑같은 JWT 지만 재발급에 관여하는 토큰. (Access Token은 접근에 관여하는 토큰) Refresh Token은 기존에 클라이언트가 가지고 있던 Access Token이 만료되었을 때 새로 발급받기 위해서 사용한다. Access Token에 비해 긴 유효시간을 가진다. Re.. 2023. 11. 26.
GiftFunding) Spring Security를 이용한 로그인 구현 Spring Security 는 서블릿 필터를 기반으로 동작하며 Dispatcher Servlet 앞에 필터가 배치되어있다. - Dispatcher Servlet 이란 ?) HTTP 프로토콜로 들어오는 모든 요청을 가장 먼저 받아 적합한 컨트롤러에 위임하는 프론트 컨트롤러. Front Controller는 주로 서블릿 컨테이너의 제일 앞에서 서버로 들어오는 클라이언트의 모든 요청을 받아서 처리해주는 컨트롤러로써, MVC 구조에서 함께 사용되는 디자인 패턴이다. - FilterChain : 서블릿 컨테이너에서 관리하는 ApplicationFilterChain. client -> application 요청시 서블릿 컨테이너는 URI를 확인해 필터와 서블릿을 매핑. 스프링 시큐리티는 사용하고자 하는 필터체인을.. 2023. 11. 23.
GiftFunding) 예외 처리하기 (@ExceptionHandler, @RestControllerAdvice) 각 에러들을 의도한 errorCode, Message 형태로 보여주기 위해 ErrorResponse dto생성. @Getter @Setter @NoArgsConstructor @AllArgsConstructor @Builder public class ErrorResponse { private ErrorCode errorCode; private String errorMessage; } Controller에서 Return할 때 발생하는 에러를 처리하기 위해 GlobalHandler생성 GlobalExceptionHandler @Slf4j @RestControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(UserException.clas.. 2023. 11. 21.
GiftFunding) @EntityListeners, @EnableJpaAuditing 으로 생성 날짜, 수정 날짜 자동 입력하기 - Entity필드에 붙여서 사용하는 어노테이션 @CreatedDate : 필드에 현재 날짜를 주입. @CreatedBy : 필드에 생성한 사람을 주입. @LastModifiedDate : 필드에 마지막으로 수정된 날짜 주입. @ LastModifiedBy : 필드에 마지막으로 수정한 사람 주입. - @MappedSuperclass : 공통 매핑 정보가 있을 때 사용하며 부모 클래스에서 선언하고 필요한 곳에서 상속받아서 사용. - @Column(updatable = false) : 생성일자는 수정 불가능하도록 설정. - @Column(updatable = true) : 수정일자는 수정 가능하도록 설정. default 값이라 생략함. - @EntityListeners(AuditingEntityListene.. 2023. 11. 21.
GiftFunding) 인텔리제이 DB 연결 (Mysql) build.gradle에 의존성 추가 runtimeOnly 'com.mysql:mysql-connector-j' 데이터베이스 생성 create database [db명]; 계정 생성 create user '계정명'@'도메인 접속 권한' identified by '패스워드'; flush privilges; ex) 'testdb1'@'%' identified by 1234; // % : 모든 IP 도메인에서 접속허용 // localhost : 127.0.0.1에서만 접속허용 계정에 DB 접근 권한 부여 grant all privileges on DB명.* to '계정명'@'도메인 접속 권한'; flush privileges; application.properties에 db연결을 위한 정보 입력 spring... 2023. 11. 21.
GiftFunding) ERD 작성 필요한 기능들은 README.md에 작성해보았고 이제 이 기능들을 구현하기 위해서 필요한 테이블 설계를 진행해보려고 한다. soeun135/GiftFunding: 선물하기 펀딩 프로젝트 (11.13 ~ 12.15) (github.com) GitHub - soeun135/GiftFunding: 선물하기 펀딩 프로젝트 (11.13 ~ 12.15) 선물하기 펀딩 프로젝트 (11.13 ~ 12.15). Contribute to soeun135/GiftFunding development by creating an account on GitHub. github.com 테이블마다의 관계를 설정할 때 식별/비식별 관계가 존재 - 식별관계 (A개체의 기본키가 B개체의 외래키면서 동시에 기본키도 됨.) 부모 테이블의 기본.. 2023. 11. 17.
GiftFunding) 프로젝트 셋업 드디어 개인 프로젝트의 시작이다. 프로젝트의 주제와 기능 리뷰를 마치고 Spring Initializr로 세팅을 하는데에 있어서 이전까지는 강의에서 강사님들이 세팅하는데로 따라했지만 "왜" 사용했는지가 제일 중요한 것 같아 하나씩 알아가면서 진행해보려고 한다. - 일단 LTS(Long Term Support)에 따라 제일 기간이 긴건 8이다. java 8부터 lambda, Stream을 지원한다. (11부터는 var 타입추론) 생각해보니까 이전 배당금 프로젝트에서 var 타입을 많이 사용했었는데 자바 11버전을 사용해서 그럴 수 있었던 것이다. 참고로 Spring boot 3.x버전부터는 자바 17을 사용해야한다. 나는 스프링부트 2.7.17버전을 사용할 것이고 자바는 8을 사용할 것이다. Spring .. 2023. 11. 16.
스프링 핵심가이드) 북스터디 8주차 : 13장 서비스의 인증과 권한 부여 13장 서비스의 인증과 권한 부여 13.1 보안 용어 이해 13.1.1 인증 - 인증(authentication)은 사용자가 누구인지 확인하는 단계 ex) 로그인 로그인은 DB에 등록된 아이디와 pw를 사용자가 입력한 아이디와 pw와 비교해서 일치여부를 확인하는 과정. 로그인 성공시 애플리케이션 서버는 응답으로 사용자에게 토큰(token)을 전달. 로그인 실패시 토큰을 전달받지 못해 원하는 리소스에 접근할 수 없음. 13.1.2 인가 인가(authorization)는 위의 인증을 통해 검증된 사용자가 애플리케이션 내부의 리소스에 접근 할 때 사용자가 해당 리소스에 접근 할 권리가 있는지를 확인하는 과정. ex) 로그인한 사용자가 특정 게시판에 접근해 글을 보려고 할 때 게시판 접근 등급에 따라 접근 허가.. 2023. 11. 12.
728x90