728x90
728x90
[Project 회고록] 친구 추가 관련 기능 구현 시 테이블에 대한 고찰(친구 목록과 친구 요청에 대한 테이블을 나눌 것인가?)
Spring2023. 5. 30. 00:01[Project 회고록] 친구 추가 관련 기능 구현 시 테이블에 대한 고찰(친구 목록과 친구 요청에 대한 테이블을 나눌 것인가?)

개요 위 사진은 현재 개발중인 토이 프로젝트의 User - Friend의 테이블 구조이다. 친구 요청을 수락하여 서로 친구인 사용자 간의 개인 채팅방을 이용 가능하게 할 생각이었으며 친구 요청과 응답에 대한 프로세스를 하나의 테이블로 관리하고, 서로 친구가 된 친구목록을 또다른 테이블에 관리하려고 하였다. (여기서 말하는 친구 요청에 대한 응답은, 웹소켓으로 구현했음) 현재 요청과 응답에 대한 프로세스 또한 요청과 응답을 관리하는 테이블의 STATUS 컬럼의 도메인값을 NOREAD, READ, REJECT, ACCEPT 의 네 경우를 두고, 요청을 보낸 사용자가 친구 요청을 받은 사용자가 친구 요청을 보지 않았는지, 봤는데 수락도 거절도 아닌지, 거절했는지에 대한 상황을 View할 수 있게 설계했다. 수..

27. 검색 기능 - 점프 투 스프링부트(게시판 만들기)
Spring2023. 1. 7. 10:4327. 검색 기능 - 점프 투 스프링부트(게시판 만들기)

해당 게시글은 점프 투 스프링부트 교재를 통한 개인 학습 용도이며 기초 세팅은 생략하였습니다. 자바 8, 스프링부트 2.7.7버전 입니다. [ 검색 기능 ] Specification 여러 테이블에서 데이터를 검색해야 할 경우에는 JPA가 제공하는 Specification 인터페이스를 사용하는 것이 편리하다. Specification을 어떻게 사용할 수 있는지 예제를 통해서 알아보자. Specification Specification은 보다 정교한 쿼리의 작성을 도와주는 JPA의 도구이다. https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#specifications QuestionService에 search 메서드를 추가하고, getL..

26. 앵커 - 점프 투 스프링부트(게시판 만들기)
Spring2023. 1. 7. 09:4826. 앵커 - 점프 투 스프링부트(게시판 만들기)

해당 게시글은 점프 투 스프링부트 교재를 통한 개인 학습 용도이며 기초 세팅은 생략하였습니다. 자바 8, 스프링부트 2.7.7버전 입니다. [ 앵커 ] 답글을 작성하거나 수정한 후 또는 추천 시 항상 페이지 최상단으로 스크롤이 이동되고 있다. 앵커(anchor) 태그를 이용해 해당 앵커 클릭 시 앵커로 스크롤이 이동되게 만들어 보자. question_detail.html (...생략...) (...생략...) 답변이 표시되는 구역에 답변 고유의 id값을 가진 앵커를 추가했다. AnswerController 컨트롤러가 answer의 id를 리다이렉트하도록 하자. (... 생략 ...) public class AnswerController { (... 생략 ...) @PreAuthorize("isAuthen..

25. 추천 구현하기 - 점프 투 스프링부트(게시판 만들기)
Spring2023. 1. 6. 23:1125. 추천 구현하기 - 점프 투 스프링부트(게시판 만들기)

해당 게시글은 점프 투 스프링부트 교재를 통한 개인 학습 용도이며 기초 세팅은 생략하였습니다. 자바 8, 스프링부트 2.7.7버전 입니다. 엔티티 변경 질문, 답변의 추천은 추천한 사람(SiteUser 객체)을 질문, 답변 엔티티에 추가해야 한다. Question (... 생략 ...) import java.util.Set; import jakarta.persistence.ManyToMany; (... 생략 ...) public class Question { (... 생략 ...) @ManyToMany Set voter; } Answer (... 생략 ...) import java.util.Set; import jakarta.persistence.ManyToMany; (... 생략 ...) public ..

추가기능 1. 조회수 구현하기 - 점프 투 스프링부트(게시판 만들기)
Spring2023. 1. 6. 22:53추가기능 1. 조회수 구현하기 - 점프 투 스프링부트(게시판 만들기)

해당 게시글은 점프 투 스프링부트 교재를 통한 개인 학습 용도이며 기초 세팅은 생략하였습니다. 자바 8, 스프링부트 2.7.7버전 입니다. 조회수 구현하기 조회수는 보통 게시판 목록 페이지, 즉 우리가 만든 question_list 템플릿에서 구현되어야 할 것이다. 우선 조회수가 보여질 장소를 마련해주자. "조회수" 라는 것은 해당 글을 조회할 때마다 올라가야 할 것이다. 우리가 만든 게시판의 "글"은 Question이다. 즉 Question 엔티티에 조회수에 해당하는 필드가 있어야 할 것이다. 또한 조회수 자체도 리파지토리에 저장되어야 하기 때문에, 서비스에서 이를 저장하고 조회수가 증가하게 만들어야 할 것이다. Question.java @Column(columnDefinition = "integer ..

24. 게시글 수정 삭제 - 점프 투 스프링부트(게시판 만들기)
Spring2023. 1. 6. 22:3324. 게시글 수정 삭제 - 점프 투 스프링부트(게시판 만들기)

해당 게시글은 점프 투 스프링부트 교재를 통한 개인 학습 용도이며 기초 세팅은 생략하였습니다. 자바 8, 스프링부트 2.7.7버전 입니다. 수정 일시 Question과 Answer 엔티티에 modifyDate필드를 추가해 DB에 컬럼을 추가시키자 private LocalDateTime modifyDate; 질문 수정 작성한 질문을 수정하려면 질문 상세 화면에서 "수정" 버튼을 클릭하여 수정 화면으로 진입해야 한다. 질문 수정 버튼 question_detail에 질문 수정버튼을 추가하자. (... 생략 ...) (... 생략 ...) #authentication.getPrincipal().getUsername() == question.author.username을 적용하였다. 로그인한 사용자와 글쓴이가 다..

트러블슈팅2023. 1. 6. 22:00Property or field 'token' cannot be found on null - 타임리프 에러 / 스프링부트 게시판 만들기 중 오류

에러문구 org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "class path resource [templates//question/question_form.html]") (...생략...) Caused by: org.attoparser.ParseException: Exception evaluating SpringEL expression: "csrf.token" (template: "/question/question_form" - line 5, col 60) (...생략...) Caused by: org.springframework.expression.spel.SpelEv..

23. 작성자(Author) 표시 - 점프 투 스프링부트(게시판 만들기)
Spring2023. 1. 1. 21:2323. 작성자(Author) 표시 - 점프 투 스프링부트(게시판 만들기)

해당 게시글은 점프 투 스프링부트 교재를 통한 개인 학습 용도이며 기초 세팅은 생략하였습니다. 자바 8, 스프링부트 2.7.7버전 입니다. 질문 목록 question_list.html 템플릿에 글쓴이를 표시해 보자. (... 생략 ...) 번호 제목 글쓴이 작성일시 (... 생략 ...) 글쓴이 항목을 추가했다. 그리고 th 엘리먼트를 가운데 정렬하도록 tr 태그에 text-center 클래스를 추가하고 제목의 너비가 전체에서 50%를 차지하도록 style="width:50%"도 지정해 주었다. for 문에도 다음처럼 글쓴이를 적용하자. question.list_html (... 생략 ...) (... 생략 ...) ... 엘리먼트를 삽입하여 질문의 글쓴이를 표시했다. 작성자 정보 없이 저장된 이전의 질..

728x90
728x90
image