rhakdnj / board-toy-project Goto Github PK
View Code? Open in Web Editor NEW게시판 만들기 프로젝트. 자바 + 스프링 부트 + git 협업
게시판 만들기 프로젝트. 자바 + 스프링 부트 + git 협업
게시판에서 게시글을 검색하는 기능을 구현하고, 검색 기능을 보다 특별하게 이용자에게 제공할 수 있는 방법을 고민해 본다.
인증 기능을 구현한다.
댓글 수정 필요
parentCommentId
추가카카오 계정으로 로그인하는 방법을 추가한다.
#10 에서 DB 접근 방법을 세팅하고 테스트 만든 내용을 토대로, 남은 구현이 있는지 확인하고 마무리 한다.
use case diagram을 그린다.
스프링 부트 프로젝트로 루트 티렉토리를 초기화하고, 개발 바탕을 만든다.
api를 만든다.
정렬 기능은 게시판 페이지에서 각 컴럼(제목
, 해시태그
, 작성자
, 작성일
)의 키워드를 누르면
해당 값으로 오름차순 또는 내림차순으로 정렬이 되게끔 동작하도록 한다.
게시글 기능과 뷰의 연결을 해야한다.
새로운 기능을 구현하기 위해 필요한 데이터를 모델링하고, 기존 도메인(엔티티 클래스)에서 변경할 부분이 있는지 살핀다.
인증 기능 구현을 위해 계정 도메인을 추가한 작업
해시태그만을 위한 특별한 검색페이지를 만들어야 한다.
해시태그 도메인 추가로 인해 화면단에서 수정 발생함
깃헙 프로젝트 세팅하고, 카드를 만들어 정리하는 연습
게시판 서비스 뷰가 실제로 동작하게 만들기 위해 해야 할 일을 정리하고 실행한다.
스프링 데이터 JPA로 엔티티를 다룰 때, 엔티티 데이터는 하이버네이트 구현체가 만든 프록시 객체를 이용하여 지연 로딩될 수 있다.
따라서 엔티티를 조회할 때 필드에 직접 접근하면 id == null 인 상황이 있을 수 있고, 이러면 올바른 비교를 하지 못 하게 된다.
getter를 사용하면 이러한 문제를 예방할 수 있다.
게시글과 댓글은 모두 회원이 작성하는데, 그 연관관계가 ERD 와 같이 자바 코드에 표현되지 않은 것 같다.
createdBy를 작성자로 생각하고 다룰 수도 있지만, 해당 필드는 작성자와 직접적인 연관이 맺어져있지 않기 때문에
보다 이상적인 방향으로 도메인 설계를 할 필요가 있다.
게시판 서비스를 만들기 위한 기본 도메인을 설계해보자.
헤더에 추가하여 쉽게 해시태그 검색 페이지 존재를 알고, 들어갈 수 있게 한다.
깃 브랜치 전략을 잡아봅니다.
게시글에 댓글을 다는 기능을 구현
자바 버전 업그레이드 테스트 코드 오류를 해결
게시판 서비스에 필요한 페이징 기능을 구현한다.
implementation 'org.springdoc:springdoc-openapi-ui:1.6.12'
implementation 'org.springdoc:springdoc-openapi-data-rest:1.6.12'
annotationProcessor 'com.github.therapi:therapi-runtime-javadoc-scribe:0.15.0'
도메인 설계 내용(#8)을 바탕으로 DB와 연동하기 위한 방법을 구상하고, 세팅을 하고, 테스트를 먼저 작성해본다.
#31 - 기능을 하다가 도메인 코드 설계가 일부 잘못 되어있는 것을 발견
User
회원 계정의 user_id
는 PK이므로 인덱스에서 제거해야한다.
user_id
는 PK이므로 인덱스에서 제거nickname
unique 제약 추가AuditingFields 클래스는 추상 클래스이고, 각 필드는 상속 받는 자식 엔티티에서 접근 및 수정이 가능해야 한다.
따라서 접근 제어자를 protected로 했어야 했는데, 이 접근 제어를 초기 설계에서 지나치게 폐쇄적으로 작성했다.
위 내용이 당장은 비즈니스 요구사항이 없어 문제가 되지 않았으나,
카카오 로그인을 작업하면서, 회원 도메인에서 인증이 없는 상태의 회원 정보를 저장하기 위해서
작성자(createdBy), 수정자(modifiedBy)를 엔티티가 직접 작성해야 하는 요구사항이 생길 것이므로
이것이 가능하게끔 접근 제어자를 제대로 수정해주도록 한다.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.