뉴스피드 프로젝트 리팩토링
·
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}") ..
JPA - 댓글 CRUD
·
TIL
생성한 일정에 댓글을 남길 수 있습니다.댓글과 일정은 연관관계를 가집니다.댓글을 저장, 조회, 수정, 삭제할 수 있습니다.댓글은 아래와 같은 필드를 가집니다.댓글 내용, 작성일, 수정일, 작성 유저명 필드 댓글은 특정 게시글에 남기는 것이므로 컨트롤러에서  요청을 받을 때 일정의 고유값인 todoId를 같이 받도록하였다. Controller@RestController@RequestMapping("/api/comment")@RequiredArgsConstructorpublic class CommentController { private final CommentService cmtService; @GetMapping("/{todoId}") public ResponseEntity> findBy..
JPA
·
TIL
JPAJPA(Java Persistence Api)는 자바에서 제공하는 인터페이스로 ORM 기술에 대한 표준 명세이다.관계형 데이터베이스를 사용하는 방식을 나타내며 ORM이므로 자바 클래스와 DB table을 Mapping한다.ORM : Object - Relational Mapping(객체 관계 매핑)객체와 관계형 데이터베이스의 데이터를 매핑하는 기술ORM 프레임워크가 객체와 데이터베이스 중간에서 매핑객체와 테이블을 매핑하여 패러다임 불일치 문제 해결JPA 동작JPA는 애플리케이션과 JDBC 사이에서 동작한다.JPA는 JDBC API를 사용하여 데이터베이스와 데이터를 주고받게 된다.JPA를 사용하는 이유기존의 개발 방식은 SQL 중심적인 개발이였다.이런식의 개발은 직접 SQL문을 작성해야 DB에 접근할..