Team project/'ICElink' 웹 서비스 프로젝트 5

["ICELINK"" Project] jpa에서 외래키 애트리뷰트를 GET요청시 오류 발생

Board 테이블에 대한 get API를 구현하는 과정에서 User 테이블과 연결시켜주는 외래 애트리뷰트(board 작성자)와 관련 문제가 발생했다.board 작성자의 아이디가 board 테이블의 외래키로 있기 때문에 그 값을 일반 애트리뷰트처럼 get 요청으로 불러봤는데 다은과 같은 문제가 발생했다.  그 문제의 원인을 찾다보니 저렇게 board 클래스의 user 변수를 구현하면 user의 아이디가 아니라, 그 객체 자체가 참조되는것을 알게 됐다. 그래서 user 변수가 하나의 테이블의 객체이기때문에 다음과 같이 코드를 변경했다.board service 클래스에서 post 방식을 그림과 같이 변경했다. 게시글 하나가 저장될 때 user객체의 name(유저의 이름) 값을 board 테이블에 새로 추가한 ..

["ICELINK"" Project] JSON parse error: Cannot construct instance of `com.example.demo.entity.User` (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value

BOARD테이블에 대한 post api를 구현하는 과정에서 postman을 이용해서 테스트하는 과정에서 위와 같은 오류가발생했다. 원인을 찾아보니까 이러한 오류는 json 데이터를 역진렬화하여 해당 클래스의 인스턴스를 생성할 수 없을때 발생한다. 이 문제를 해결하기 위해 JSON 데이터를 USER 객체로 변환하기 위해서는 USER 클래스에 기본 생성자와 함께 String 타입의 인자를 받는 생성자 또는 팩토리 메서드를 추가해야한다.  해결:BOARD테이블의 USER테이블이랑 연결 시켜주는 외래키 애트리뷰트가 JSON형태의 데이터 아닌 USER클래스 객체로 데이터를 받아야하기 때문에 위의 코드에서 처럼 @JsonCreator 어노테이션과 @JsonProperty 어노테이션을 사용하여 펙토리 메서드를 정의하..

["ICELINK"" Project] board테이블 내용 조회 API 구현도중에 다음과 같은 오류 발생: servlet.service() for servlet [dispatcherservlet] in context with path [] threw exception [handler processing failed: java.lang.stackoverflowerror]

board테이블에 저장 된 데이터를 Model을 이용해서 list형태로 불러서 html로 시각화할 수 있는API를 구현 동안 다음과 같은 오류가 발생했다.원인:그 이유로는 스택 오버플로였다.스택 오버플로 오류는 코드가 반환하지 않고 너무 많은 메서드를 호출하고 스택에 너무 많은 메서드가 있어 오버플로를 유발할 때 발생합니다. 이는 일반적으로 메서드가 반복적으로 자신을 호출하는 무한 루프가 있을 때 발생합니다.board테이블에서 사용중인 @Data lombok이 스택 오버플로의 원인이였다. board테이블이 user테이블과 userId(보드작성자)애트리부트로 연결되어있기 때문에 userId애트리뷰트의 데이터를 출력하고자할 때 무한참조가 일어났다. 해결:board테이블에 있는 @Data lombok을 삭제하..

["ICELINK"" Project] DB 설계 #2

프로젝트를 진행하면서 DB 스키마를 여러번 변경하고 애트리뷰트 추가 삭제 반복해서5원12일 기준으로 최종본 DB스키마를 다음과 같이 설계완료했습니다.크게 메인 테이블로는 user,board 두개의 테이블이 있다. 1) user테이블과 career테이블의 연관관계는 유저한명이 여러 경력을 가질 수 있기 때문에 1대다로 매핑을 했고, 코드를 다음과 같이 작성 했다. 그리고 나머지 1대다 관계를 가진 테이블들도 똑같이 매핑했다. 2) board_comp, board_rec, board_part 테이블들은 완료,모집,진행중인 프로젝트(board)를 기록하기 위한 테이블들이다. 한 유저(user)가 한번에 여러개의 프로젝트(board)를 할 수 있고, 한 프로젝트(board)에 여러명의 유저(user)들이 참여할..

["ICELINK"" Project] DB스키마 설계

"ICELINK"플랫폼을 개발하기 위한 초기단계 중하나인 DB스키마(테이블) 설계를 맡았다.팀원들과 회의를 통해 필수로 있어야되는 객체, 객체들간에 관계와 객체들그들의 애드리뷰트를 정하고DB 테이블들을 설계해봤다. 정규화를 위해서 다중값 필드를 가진 모든 애트리뷰트를 따로 다른 테이블로 만들었다.