전체 글 119

[개발]🎁배운점 - @JsonIgnore

@JsonIgnore에 대해서 단순히 블로그 글이 아니라 내가 직접 몸소 필요성을 느끼고 그에 대한 해결책으로 이 어노테이션을 알게되어서 너무나 기쁘고 신기했다😂 🛤️현상 review 엔티티에 필요한 schoolId라는 속성이 school 테이블에 조인되어 있기 때문에 위와같이 id 값이 1번에 해당하는 불필요한 학교의 정보가 다 딸려나오게 되었다. school 테이블의 필드가 워낙 많다보니 생각보다 불편함을 느낄만한 상황이었다. 🗝️해결

[개발]🤦🏻‍♀️고민하기 - Review_논리적 삭제(logical delete) 도입

완전한 삭제가 아니라 반 삭제처럼 데이터를 일시적으로 비활성화하는 것을 "소프트 삭제(soft delete)" 또는 "논리적 삭제(logical delete)"라고 합니다. 소프트 삭제는 데이터를 데이터베이스에서 완전히 삭제하지 않고, 대신 삭제된 표시를 나타내는 특정 칼럼(예: "isDeleted")의 값을 변경하여 해당 데이터를 비활성화시킵니다. 이렇게 삭제된 표시를 가진 데이터는 일반적으로 조회 및 수정 작업에서 필터링되어 처리됩니다. 소프트 삭제는 데이터 복구 가능성이 있고, 삭제된 데이터의 이력을 추적할 수 있는 장점이 있습니다. 또한, 완전한 삭제보다 더 안전한 방법으로 데이터를 관리할 수 있습니다. 스프링 웹 프로젝트에서 소프트 삭제를 구현하기 위해서는 데이터베이스 스키마에 삭제 여부를 나타..

[개발외]멘토링 진행 - 2023/6/1

지난 5월에도 멘토링을 진행하였으나 깜빡쓰...ㅎ 내가 기억하는 유용한 멘토링 내용 6월 말에 실서버에 프로젝트를 등록할 예정인데 그때까지 실질적으로 할 수 있을 만큼의 기능을 확실히 정하기 지금까지 했던 개발 방식처럼 로컬에서만 프로젝트를 해보는 것과 실서버에 올린 다음의 진행방식이나 방법, 고려 대상들이 상당히 다르기 때문에 기능이 다소 빈약하더라도 실서버에 등록을 한 뒤에 추가 작업들을 실시해 보는 것이 훨씬 큰 도움이 될 것이라는 점 지금까지 우리가 생각했던 학생 review 기능은 학생들이 다는 리뷰만 고안하고 있었는데, 멘토님의 조언으로 해당 고등학교의 선생님이 리뷰를 달아주는 것이 오히려 더 도움이 될 것이라는 말씀에 착안하여 그 부분도 도입예정 실제로 웹 서비스를 하게 되면 delete를 ..

1. 스터디 시작

지난주 월요일에 스터디 시작했으나 블로그 글을 적는 것을 깜박 잊어서 지금에서라도 작성해보록 하겠슴다... 지난주 주제는 JWT었다. 진행방식 1주일 전에 스터디의 주제를 정한다. ex) jwt, was, java 심화문법 등등 각자 주제에 대해 공부하고 서로 발표할 내용에 대해 ppt를 '간단히' 제작한다. 왜냐하면 공식적인 발표가 아니라 서로 공부한 것을 공유하는 차원이고, 더 중요한 것은 서로 대화로 주고/받는 것이 때문에!!! 만남에서 서로 ppt를 공유하며 각자 발표한다. 발표를 진행하며 모르는 것들은 질문하고, 새로 알게된 것들은 메모한다. 모르는 사항은 상대방이 답변해주거나 다음 모임까지 알아오도록 한다.

스터디 2023.06.12

[개발]🚨ERROR - 객체vs기본 자료형의 불일치

🛤️현상 public class Board { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; //이 오브젝트의 아이디 private String title; private String content; private Long category; @ManyToOne @JoinColumn(name = "userId") @JsonIgnore private User user; . . . } 이런 식으로 Board entity가 있는데 여기서 주목해야 할 부분은 user 필드이다. 이 필드의 자료형은 User라는 entity 클래스이다. 자료형을 객체로 지정하면 JPA가 알아서 그 객체의 pk를 가지고 온다고 한다. 그래서 user ..

JWT_인증/인가

❤️인증(Authentication) 로그인. 내가 이 사이트에 가입된 회원임을, 즉 특정 서비스에 일정 권한이 주어진 사용자임을 아이디와 패스워드 등을 통해서 말 그대로 인증 받는 것이다. ❤️인가(Authorization) 이렇게 한 번 인증받은 사용자가 후에 사이트의 여러 기능들을 사용할 때 사용하는 방법으로, 즉 이를테면 내가 페북에 로그인으로 인증을 하고 '나서' 내 친구들의 목록을 보거나 내 페이지에 글을 작성하거나 내 계정으로'만' 할 수 있는 활동들을 하고자 할 때. 페이스북이 내가 로그인 되어 있음을 알아보고 허가를 해주는 것이다. 로그인이 유지되는 상태에서 일어나는 일이라고 이야기할 수 있다. ❤️JWT JWT를 사용하는 서비스에서는 사용자가 로그인하면 토큰이라는 표를 출력해서 건네준다..

[개발]🤦🏻‍♀️고민하기 - review controller 리팩토링

⬇️리팩토링 전 코드 @RestController @CrossOrigin(origins = "http://localhost:3000", methods = {RequestMethod.OPTIONS, RequestMethod.DELETE, RequestMethod.GET, RequestMethod.POST, RequestMethod.PUT}) @RequestMapping("/review") public class ReviewController { private final ReviewService reviewService; public ReviewController(ReviewService reviewService) { this.reviewService = reviewService; } // 리뷰 등록 @Po..

[개발]🎁배운점 - JPA 쿼리 메소드의 매개변수_자료형

save 메소드에서는 매개변수로 Review 객체를 사용하였다. 그런데 findBySchoolId 메소드는 schoolId를 찾아주는 메소드이기 때문에 반드시 정수형이어야 한다고 생각했다. 그래서 저 부분을 건들이지 않고 다른 방법을 찾느라 시간을 굉장히 많이 소비하였는데 find 메소드의 매개변수도 정수형이 아니어도 된다는 것을 알게되었다.

[개발]🚨ERROR - org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error

🛤️상황 @RestController @CrossOrigin(origins = "http://localhost:3000", methods = {RequestMethod.OPTIONS, RequestMethod.DELETE, RequestMethod.GET, RequestMethod.POST, RequestMethod.PUT}) @RequestMapping("/review") public class ReviewController { private final ReviewService reviewService; public ReviewController(ReviewService reviewService) { this.reviewService = reviewService; } // 리뷰 등록 @PostMappi..