본문 바로가기

Service3

YSit [13] - 댓글 기능 구현하기 댓글 테이블 구성에 조금 문제가 있어서 수정했다. 댓글은 기본적으로 자식이 하나만 있는게 아니라 무한적으로 생성이 가능하기 때문에 이를 생각하여 설계를 해야한다. 댓글 테이블의 게시물ID, 작성자(유저)ID, 부모ID, 내용 컬럼은 유지하고, ref(group), step(level), refOrder를 새로 추가해주었다. 이론적으로 설명을 해보자면 ref 컬럼은 부모가 없는 댓글을 기준으로 그룹화를 시켜서 댓글 리스트를 출력할 때 다른 댓글이 있더라도 부모 댓글 밑에 출력이 되도록 한다. step 컬럼은 쉽게 말해 그룹 내에서 단계를 나누는 컬럼이다. 댓글 그룹 안에서도 순서를 나누어야 하기 때문에 그룹 내의 그룹 느낌이다. 마지막 refOrder 컬럼은 단순히 그룹 내의 순서를 표시하는 컬럼이다. [.. 2022. 12. 30.
YSit [11] - 게시물 작성 / 목록 기능 구현 유저 기능은 어느정도 구현이 끝났으므로 게시판 기능을 구현을 시작했다. 먼저 게시판 카테고리가 테이블로 만드는 것보다 Enum타입으로 구현하는게 더 편해보이고, 추가적으로 카테고리를 생성할 수 있어서 테이블이 아닌 Enum타입으로 바꿨다. [ 게시물Repsitory 생성 ] @Repository와 @RequiredArgsConstructor 어노테이션을 선언해준다. ( 자세한 설명은 이전 글들 참고 ) 엔티티 저장을 위해 엔티티를 파라미터로 받고 엔티티매니저가 persist해주는 메서드를 만들어준다. 그리고 전체 리스트 구하는 메서드, 게시물Id 기준으로 게시물 하나 구하기, 제목 기준, 내용 기준으로 검색하기 메서드를 만들어준다. 제목 기준, 내용 기준으로 검색은 유사한 형태로 검색해도 게시물이 나와야.. 2022. 12. 28.
YSit [5] - UserRepository, Service 개발하기 나는 계층형 구조를 이용해 프로젝트를 진행할 생각이었다. Repository는 JPA를 직접 사용하게 되는 계층으로, Entity Manager를 사용한다. Service는 비즈니스 로직을 작성할 공간이고 트랜잭션을 처리할 부분이기도 하다. 먼저 JPA에서 Repository임을 알 수 있게, 컴포넌트 스캔으로 스프링빈으로 등록하도록 @Repository 어노테이션을 선언해준다. 자바 코드를 직접 입력해 컴포넌트 스캔을 할 수 있지만 롬복을 이용하면 어노테이션 하나로 코드를 간추릴 수 있다. 그리고 엔티티 매니저를 선언하고 @PersistenceContext로 주입받는다. 제일 첫번째 기능은 당연하게도 회원정보 저장이기 때문에 세이브 메서드를 만들어준 후 유저 객체를 파라미터로 받고 받은 유저 엔티티를 .. 2022. 12. 24.