뉴스피드 프로젝트 리팩토링
·
TIL
현재 게시물을 페이징 처리하는 ResponseDto를 Post만 처리하는 Dto가 아닌 제네릭 클래스로 만들어서 Post뿐만이 아니라 다른 곳에서도 쓰일 수 있게 하면 어떨까?? 라는 피드백을 받았는데 제네릭클래스를 아예 생각지도 못하고 있었던 나는 머리를 한대 맞은 기분이였다 왜 제네릭으로 만들 생각을 못했지... ?? 아무튼 그래서 한번 제네릭 클래스로 한번 만들어 봤습니다. 기존 PostPagingResponseDto기존에는 이름부터 PostPaging으로 오직 게시물만을 위한 페이징 Dto였다..@Getterpublic class PostPagingResponseDto { private final Long id; private final String content; private ..
뉴스피드 프로젝트
·
프로젝트
[프로젝트 기간 ]    24/10/18 ~ 24/10/24[팀원 및 역할]문정원 (팀장)  : 친구 요청 생성, 친구요청 응답 API, 친구 요청 목록 조회김지혜  :  회원가입, 로그인, 프로필 상세조회, 프로필수정(이름, 비밀번호)이하승 : 게시물 등록, 게시물 단건 조회, 페이징 조회, 게시물 수정, 삭제장용환 : 친구 삭제, 친구 목록 조회, 회원탈퇴 [구현 기능]- 회원 -회원가입비밀번호 암호화로그인로그인 성공 시 JWT 토큰 발급 및 쿠키에 저장프로필 상세 조회프로필 수정회원 탈퇴비밀번호 입력받아 확인소프트 삭제탈퇴됨과 동시에 관련 게시글과 친구데이터 삭제친구 요청 및  응답친구 조회친구 삭제본인의 친구만 삭제가능- 게시글 - 게시글 등록단건 조회 로그인 하지 않아도 조회 가능페이징 조회로그..
REST, REST API, RESTful
·
TIL
RESTREST 정의Representational State Transfer의 약자이다.Rest는 기본적으로 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 활용할 수 있는 아키텍처 스타일이다.REST는 네트워크 상에서 Client와 Server 사이의 통신 방식 중 하나이다.자원(resource)의 표현(representation) 자원 : 해당 소프트웨어가 관리하는 모든 것-> ex) 문서, 그림, 데이터, 해당 소프트웨어 자체 등자원의 표현 : 그 자원을 표현하기 위한 이름-> ex) DB의 게시글 정보가 자원일 때,  'post'를 자원의 표현으로 정한다.상태(정보) 전달데이터가 요청되어지는 시점에서 자원의 상태(정보)를 전달한다.JSON 혹은 XML를 통해 데이터..
JPA - 일정관리 앱 만들기
·
TIL
과제 내용이번 과제는 JPA를 활용하여 일정관리 앱을 만드는 것이였습니다. 이번에는 각각의 API마다 정리를 했으니 블로그 봐주세요 !!https://haseung22.tistory.com/ haseung22의 블로그haseung22 의 블로그 입니다.haseung22.tistory.com  과제를 하며 있었던 트러블 슈팅배경과제의 요구사항 중 일정 담당 유저 (매니저)와 일정의 연관관계를 N:M으로 하라는 요구사항이 있었는데이걸 어떻게 할지 고민하다가 처음에는 User와 Todo 테이블 이외에 일정 담당 유저를 관리하는 Manger 테이블과 일정과 그 Manager 테이블을 N:M으로 연관 짓기 위하여 Management라는 테이블을 하나 또 만들어서 연관관계를 맺어줬었다.근데 코드를 계속 보다 보니 ..
JPA - 회원가입 로그인
·
TIL
저번 포스팅에 올렸던  JwtUti를 이용하여 회원가입과 로그인을 구현하였다. 1. 엔티티 생성일정과 일정 담당유저와의 연관관계를 맺으라는 요구사항이 있어 OneToMany를 이용하여 1:N관계를 맺었다.@Entity@Getter@Table(name = "user")@NoArgsConstructor(access = AccessLevel.PROTECTED)public class User extends AuditingDate { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(nullable = false, unique = true) private String email; @Col..
JPA - JWT와 필터 구현하기
·
TIL
JwtUtil이번 과제에서는 JWT 토큰을 이용한 인증, 인가를 구현해야한다. 그렇기 때문에 JWT 토큰 생성만을 위한 Util 클래스를 만들었다.@Componentpublic class JwtUtil { public static final String AUTHORIZATION_HEADER = "Authorization"; public static final String AUTHORIZATION_KEY = "auth"; public static final String BEARER_PREFIX = "Bearer "; private final long ACCESS_TOKEN_TIME = 60 * 60 * 1000L; // 60분 @Value("${jwt.secret.key}") ..
영속성 컨텍스트
·
TIL
영속성 컨텍스트란?영속성 컨텍스를 쉽게 표현하자면 Entity를 객체를 효율적으로 쉽게 관리하기 위해 만들어진 공간입니다.JPA에서는 테이블과 매핑되는 Entity 객체 정보를 영속성 컨텍스트를 통해 애플리케이션 내에서 오래 지속되도록 보관합니다.영속성 컨텍스트에 접근하여 Entity 객체들을 조작하기 위해서는 EntityManager가 필요합니다. 영속성 컨텍스트 기능1차 캐시쓰기 지연 저장소객체 동일성 보장 1차캐시 영속성 컨텍스트는 내부적으로 캐시 저장소를 가지고 있는데 이를 1차 캐시라고 부릅니다.캐시 저장소는 Map 자료구조 형태로 Key에는 @Id로 매핑한 기본키를,Value에는 Entity 객체를 저장합니다.em.persist(memo); // 메서드 호출 시 memo Entity 객체를 ..
페이징 조회 - Pageble / PageRequest
·
TIL
일정을 Spring Data JPA의 Pageable과 Page 인터페이스를 활용하여 페이지네이션을 구현페이지 번호와 페이지 크기를 쿼리 파라미터로 전달하여 요청하는 항목을 나타냅니다. 할일 제목, 할일 내용, 댓글 개수, 일정 작성일, 일정 수정일, 일정 작성 유저명 필드를 조회합니다.디폴트 페이지 크기는 10으로 적용합니다. 일정의 수정일을 기준으로 내림차순 정렬합니다.페이징 조회를하기위해 Spring Data JPA에서 제공하는 Pageble 인터페이스와 PageRequest 클래스를 사용하였습니다. PageblePageable은 데이터를 페이지 단위로 검색하고 제어하는 인터페이스입니다.Pageable은 페이지 처리에 필요한 정보만 전달하는 용도이며, 실제 객체를 생성할 때는PageRequest 클..