프로젝트/ChatUniv

프로젝트/ChatUniv

[프로젝트] ChatUniv 페이징 최적화

페이징 최적화를 진행해 보았다. 페이징 최적화에는 크게 두 가지 방법이 있다. NoOffset과 커버링 인덱스를 사용하는 방법이 존재한다. 이번에 프로젝트에서 게시글과 댓글의 페이징 최적화를 진행하였는데, 이 글은 게시글에 관해서만 작성할 예정이다. 일반적인 페이징 쿼리 기존의 코드는 아래와 같았다. public interface BoardRepository extends JpaRepository { Page findAll(final Pageable pageable); } @Transactional(readOnly = true) public BoardAllResponse findAllBoards(final Pageable pageable) { Page sortedBoards = boardRepositor..

프로젝트/ChatUniv

[프로젝트] ChatUniv GPT 적용

이번에는 GPT를 적용하는 내용을 정리할 것이다. openAi를 호출하는 것이기에 큰 어려움은 없다. https://www.baeldung.com/spring-boot-chatgpt-api-openai Using OpenAI ChatGPT APIs in Spring Boot | Baeldung Learn how to use the API of OpenAI ChatGPT in Spring Boot applications. www.baeldung.com 위 내용을 참고하였다. 따라서 중복되는 내용은 생략하여 진행하겠다. Chat @Entity @Table(name = "CHAT") public class Chat extends BaseEntity { @Id @GeneratedValue(strategy = G..

프로젝트/ChatUniv

[프로젝트] ChatUniv Comment API, 동적 테스트 #4

이번에는 Comment API에 관한 내용을 정리할 것이다. 우선 기본적으로 Board아래에 comment가 존재한다. 하지만 확장성을 고려하여 chat이나 다른 여러 comment도 생길 수 있다고 생각하여 만들게 되었다. 이로 인해 새로운 동적테스트도 적용해 보았고, 확장성에 대비하여 코드를 작성하였다. Comment @Entity @Inheritance(strategy = InheritanceType.JOINED) @Table(name = "COMMENT") @DiscriminatorColumn public abstract class Comment { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(nu..

프로젝트/ChatUniv

[프로젝트] ChatUniv Board API #3

이번에는 Board API에 관해 정리할 예정이다. 이번 글은 전반적인 코드 설명과 여러 시행착오에 대한 설명을 할 예정이다. Board는 일반적인 게시판과 일치한다. 하지만 코드를 작성할때 컨벤션 및 클린코드를 적용하려 노력하였다. 또한 여러 테스트를 통해 동작을 검증하였고, 그 과정에서 발생한 시행착오를 기록하겠다. Board는 현재 예외에 대한 문서화도 진행되어 있다. Board @Entity public class Board { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(nullable = false) private String title; @Column(nullable = false) @Lob ..

프로젝트/ChatUniv

[프로젝트] ChatUniv Member API #2

오늘은 Member API에 관해 정리할 예정이다. 전반적인 코드 설명과 구조 변경에 대한 설명을 할 예정이다. 기존에 Exception과 Advice를 전부 묶어서 관리하였다. 그 결과 각자 개발 후 머지를 하는 과정에서 conflict이 자주 발생하였다. 또한 예외가 많아질수록 관리하기 어렵다는 의견도 많았다. 따라서 도메인별로 예외를 관리하도록 하였다. Member API는 현재 간단하게 되어있다. 추후 추가될 예정이지만 현재는 Member 조회와 비밀번호 변경이 만들어져 있다. Member @Entity public class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(nullab..

프로젝트/ChatUniv

[프로젝트] ChatUniv 전반적인 설계 및 Auth구조 #1

방학 동안에 프로젝트를 진행하기로 하였다. chat ai를 사용하여 대학생들에게 여러 정보를 전달해 주는 등 여러 기능을 추가할 생각이다. 이 프로젝트는 실제 서비스를 할 생각이기에 꼼꼼하게 코드를 작성하고 서로 리뷰를 할 생각이다. 또한 서비스를 통해 트래픽을 받아보는 경험을 할 수 있을 것이라 생각된다. 각자 맡은 파트가 있기에 초반 Auth 구조의 경우 내가 개발을 하지는 않았지만 이 프로젝트를 통해 서로 모두 공부의 목적도 있기에 모든 코드를 이해하고, 분석하며 코드리뷰를 진행했다. 또한 컨벤션을 정하여 이를 기준으로 작성하기로 하였다. 코드의 통일성 및 가독성을 위한 선택이다. Merge도 매우 신중하게 진행되며, 코드리뷰를 2인 이상 받아야지만 Merge가 가능해진다. 또한 백엔드의 경우 Lo..

javajoha
'프로젝트/ChatUniv' 카테고리의 글 목록