나의 포트폴리오 게임 페이지는 배포까지의 괴정을 완료한 프로젝트이다.
그러나 지속적인 최적화 그리고 기능 추가를 위해 지속적 관리를 이어가고 있다.
게시판 기능의 완전한 기능을 구현하고자 추가적으로 Reply(댓글)기능을 추가 한다.
댓글 기능의 경우 게시판 하나당 댓글정보는 여러개가 연결되기 때문에 @OnetoMany
양방향 매핑츨 시켜주어 사용하기로 한다.
추가적으로 게시판이 삭제될 경우 매핑되어 있는 댓글 또한 같이 지워질 수 있도록 cascade
를 All로 지정하여 별도 삭제 기능 추가 없이
작업이 이루어 질 수 있도록 한다.
단, 추후 Account와 매핑할 경우 cascade
기능을 사용하지 않고 고아 객체로 만들어 두어야한다.
@OneToMany(mappedBy = "gallary",cascade = CascadeType.ALL)
private List<GallaryReply> gallaryReply = new ArrayList<>();
당연히데이터 입력 후 추가적으로 PK를 입력하여 JOIN 처리를 해주어야 한다.
public void setGallary(Gallary gallary){
this.gallary=gallary;
if(!gallary.getGallaryReply().contains(this)){
gallary.getGallaryReply().add(this);
}
}
댓글이라면 익명 댓글 보다는 닉네임 댓글을 사용하는 것이 모두를 위해 좋다고 생각했다.
이전에 매핑시켜놓은 테이블중 Reply테이블
에서 Account
컬럼에 pk를 입력시켜주고 타입리프를 통해 호출해 주면 될것이다.
각 테이블에 속해 있는 댓글을 출력하기 위해 아래와 같이 gallary.getGallaryReply()
로 수정한다.
// 게시판 상세 내용 출력
@GetMapping("/gallary/view/{id}")
private String find(@PathVariable("id") Long index, Model model) {
Gallary gallary = gallaryService.findIndex(index).orElseThrow(()
-> new IllegalArgumentException("error"));
model.addAttribute("details", gallary);
* model.addAttribute("replys", gallary.getGallaryReply());
return "home/gallary/gallarydetail";
}
Contents
와 댓글
을 사용자가 쉽게 볼 수 있도록 오른편에 구성하여 페이지의 허전함을 개선하였다.
그러나 댓글의 닉네임
을 노출시기는 것이 좋다 생각했다.
1.로그인 상태의 경우에만 보일 수 있도록 타입리프를 구성한다. 2.이미지에 관한 개선은 AWS 버킷과 연동해야한다. 이 부분은 학습이 필요.