목록분류 전체보기 (60)
yeon's blog
🌱 HTTP 헤더 개요 HTTP 헤더 header-field = field-name ":" OWS field-values OWS (OWS: 띄어쓰기 허용) HTTP 전송에 필요한 모든 부가정보를 넣는다. 예를 들어 메시지 바디의 내용, 메시지 바디의 크기, 압축, 인증, 요청 클라이언트, 서버 정보, 캐시 관리정보.. 등... 표준 헤더는 굉장히 많고, 필요 시 임의의 헤더 추가가 가능하다. 과거의 HTTP 헤더 분류는 생략! 🌱 표현 #표현: 메타 데이터와 표현 데이터를 합친 것 HTTP BODY - RFC7230 메시지 본문을 통해 요청이나 응답에서 전달할 실제 데이터를 표현 데이터 전달 하는데 사용한다. 메시지 본문을 페이로드라고 부른다. Content-Type 클라이언트랑 서버 간에 실제 데이터를..
🖇 연관관계 연관관계: 두 도메인(객체, 테이블)이 서로 논리적인 의미를 갖고 양쪽을 참조하는 관계 💡 연관관계 매핑시 생각해야 하는 것 방향(Direction): 단방향 연관관계, 양방향 연관관계 연관관계의 주인: 양방향 연관관계 매핑시, 반대편 테이블의 외래키를 관리하는 객체 다중성(Multiplicity): 일대일(1:1), 일대다(1:N), 다대일(N:1), 다대다(N:N) ✔️ 방향 (Direction) 관계형 데이터베이스의 테이블에는 방향이란 개념이 없지만 (외래키 하나로 양쪽 테이블을 필요에 따라 조인할 수 있었음), 객체지향 프로그래밍에서는 참조용 필드가 있는 쪽으로만 참조가 가능하다. 예를 들어, 다음과 같은 코드일 때 class MEMBER { private long id; privat..
Entity를 설계할 때 항상 사용하는 가장 기본적인 어노테이션들이다!! 공부하는 김에 정리까지~~~ 🖇 객체와 테이블 매핑 @Entity - Table과의 매핑 - @Entity가 붙은 클래스는 JPA가 관리함 💡 속성 name: JPA에서 사용할 `엔티티 이름` 지정 ‼️ 주의사항 1. 기본 생성자(파라미터가 없는 Public 또는 Protected 생성자) 필수! → JPA가 엔티티 객체를 생성할 때 기본 생성자를 사용하기 때문 2. 엔티티 객체 생성 시 기본 생성자 이용 → final, enum, interface, inner class 사용 불가 3. @Id와 함께 사용해야 함 → @Id 어노테이션이 없으면 AnnotaionException 예외 발생 @Table - Entity와 매핑할 Tab..
우리는 백엔드 2명, 프론트 1명으로 이루어진 팀이고 나는 백엔드를 맡고 있다. 백엔드가 두명이기 때문에 각각 파트를 나누어 개발을 진행하였다. 이 프로젝트는 8가지 domain으로 이루어져 있다. 간단히 정리해보면 아래와 같다. 📑 8가지 Domain 1. User 회원가입 / 로그인 / 로그아웃 / 회원정보 수정 2. Store 스토어 등록 / 수정 / 삭제 3. Bread 빵팅 등록 / 수정 / 삭제 4. Order 주문 / 주문 취소 5. Review 리뷰 등록 / 수정 / 삭제 6. Follow 팔로우 / 팔로우 취소 7. Notification 세가지 type의 알림 8. Image Bread, Store 등록시 함께 등록하는 이미지들 나는 이번 프로젝트에서 User, Order, Review..
프로젝트 주제: 인기있는 빵 선착순 예약 시스템 만들기 🥯 SpringBoot + Mysql 를 이용한 프로젝트 & 협업 툴 Notion 이용 💡 프로젝트 주제 선정 이유 여러가지 아이디어를 내며 고민하던 중 구매 or 예약을 하는 사이트를 만들어보고 싶다는 의견이 나왔다. 프로젝트 멤버중 빵순이가 둘이어서,,나포함,,ㅎㅎ 빵켓팅이라는 것도 생기고 줄을 서서 먹는 빵집도 많아졌기 때문에 '인기있는 빵'을 주제로 잡아보았다. 이에 더하여 아무래도 인기있는 빵들은 금방 예약이 될거라 생각하여 선착순 타임딜 개념을 집어넣기로 했다. 빵 등록자가 날짜/시간/재고를 필수적으로 등록하여 해당 날짜/시간에 빵팅이 오픈되는 시스템이다. 추가할 기능들도 많고 보완할 부분도 많지만 차차 업그레이드 시킬 예정이다! 프로그램..
JPA의 구현체 중 하나인 하이버네이트는 다양한 기능을 제공하는데 그 중 엔티티만 등록해 놓으면 DDL(Data Definition Language)을 자동으로 작성하여 테이블을 생성하거나 수정해주는 ddl-auto라는 설정이 있다. 이번 포스트에서는 JPA 하이버네이트에서 제공하는 ddl-auto의 종류와 기능, 그리고 주의 사항에 대해서 정리하려고 한다! 초기 application.yml 설정에서 JPA DDL-AUTO 값을 create로 설정해 두면, 서버가 재시작 될 때마다 기존에 생성된 테이블을 삭제하고 다시 생성한다. 만약 데이터값이 들어가 있다면 모든 데이터 값이 사라지는 문제가 발생하는 것이다.🚫🚫🚫 이러한 문제 발생을 방지하기 위해 ddl-auto 옵션에 대해 알아보고자 한다. ✔️ DD..
지난 포스트에 이어 Spring Security의 인증 처리 과정에 대해 알아보려 한다. 4. Spring Security 인증 처리 과정 1) 클라이언트(유저)가 로그인을 요청한다. → Http Request 수신 2-1) AuthenticationFilter에서 인증을 처리한다. Servlet Filter에 의해서 Security Filter로 Security 작업이 위임되고 (AuthenticationFilter가 요청을 가로챔), 여러 Security Filter 중에서 UsernamePasswordAuthenticationFilter에서 인증을 처리한다. 2-2) UsernameAuthenticationToken 발급 AuthenticationFilter는 HttpServletRequest에서 ..
1. Spring Security 개념 스프링 기반의 애플리케이션의 보안(인증과 권한)을 담당하는 프레임워크 스프링 시큐리티는 필터(Filter) 기반으로 동작하기 때문에 스프링 MVC와 분리되어 관리 및 동작한다. 필터(Filter)는 Dispatcher Servlet으로 가기 전에 적용되므로 가장 먼저 URL 요청을 받지만, Interceptor는 Dispatcher와 Controller 사이에 위치한다. 그래서 이 둘은 적용 시기에 차이점이 있다. Client (request) -> Filter -> DispatcherServlet -> Interceptor -> Controller Spring Security 3.2버전 부터는 자바 config 설정으로 간단하게 설정할 수 있다. (XML 설정 X..
패키지 구조에 정답이 있다고 생각하진 않지만, 기본적으로 사용하는 구조는 계층형과 도메인형이라고 생각한다. 계층형 구조 아래와 같이 계층별로 클래스를 모아두는 방법이다. (Controller는 Controller끼리, Service는 Service끼리) 계층형 구조는 프로젝트에 대한 이해가 낮아도 전체적인 구조를 빠르게 파악할 수 있는 장점이 있지만, 디렉터리에 클래스들이 너무 많이 모이게 되는 문제점이 있다. 도메인형 구조 아래와 같이 하나의 도메인 아래 관련 controller, service, repository 등 패키지를 각각 만들어 넣는 방법이다. 도메인형 구조의 경우 관련된 코드들이 응집해 있다는 장점이 있지만, 프로젝트에 대한 이해도가 낮을 경우 전체적인 구조를 파악하기 어렵다.
🌱 HTTP 상태코드 소개 상태코드: 클라이언트가 서버로 요청을 보냈을 때, 요청의 처리 상태를 응답해주는 기능 👉 1xx (Informational): 요청이 수신되어 처리중 ➡️ 거의 사용되지 X 2xx (Successful): 요청 정상 처리 3xx (Redirection): 요청을 완료하려면 추가 행동 필요 4xx (Client Error): 클라이언트 오류, 잘못된 문법 등으로 서버가 요청을 수행할 수 없음 5xx (Server Error): 서버 오류, 서버가 정상 요청을 처리하지 못함 🌱 2xx - 성공 200 OK 클라이언트의 요청이 정상적으로 처리되었음을 알리는 상태코드 201 Created POST로 요청을 보내면 리소스 URI를 서버에서 생성하는 상태코드 HTTP Header Loca..