[Project] User Controller 개발
현재 글은 User DTO 개발 글의 뒷 내용을 이어갑니다.
👨💻 User CRUD 개발과정 순서
-
Repository :데이터베이스에 접근하여 데이터를 다루는 기능을 담당하는 Repository를 먼저 구현.
JpaRepository를 추가함으로써 USER CRUD 기능을 쉽게 사용하게 함.email로 user찾기 / username으로 user찾기 / id값에 해당하는 user찾기 메서드 추가.
Entity :
데이터베이스의 테이블과 매핑되는 객체로, 테이블의 컬럼들과 매핑되는 필드를 가지고있음.
UserReputation
DTO :
데이터를 전송하기 위한 객체로, Entity와 비슷하지만 HTTP 요청과 응답에서 사용하는 데이터를 가지고 있음.
- Service :
비즈니스 로직을 처리하는 컴포넌트로, Repository를 사용하여 데이터를 조작하고, 비즈니스 로직에 맞게 데이터를 가공한다.
- Controller :
HTTP 요청을 처리하는 컴포넌트로, 클라이언트로부터 요청을 받아 Servcie에게 전달하고, Service가 처리한 결과를 다시 클라이언트에게 반환한다.
- Mapper :
Entity와 DTO 간의 변환을 담당하는 컴포넌트로, Entity를 DTO로 변환하거나, DTO를 Entity로 변환하는 등의 작업을 함
📃 User Service에 포함될 내용
- 회원가입 및 로그인 기능: 사용자는 회원가입하여 계정을 만들고 로그인하여 자신의 프로필에 접근할 수 있습니다.
- 프로필 관리 기능: 사용자는 자신의 프로필을 수정하고 삭제할 수 있습니다. 이는 프로필 사진, 이름, 소개 등을 포함할 수 있습니다.
- 질문과 답변 기능: 사용자는 질문을 작성하고 다른 사용자가 답변할 수 있습니다. 사용자는 또한 다른 사용자가 작성한 질문에 대한 답변을 제공할 수 있습니다.
- 태그 기능: 사용자는 태그를 사용하여 질문과 답변을 분류할 수 있습니다. 이는 사용자가 쉽게 관련 질문과 답변을 찾을 수 있도록 도와줍니다.
- 포인트 시스템: 사용자가 질문이나 답변에 대한 좋아요나 최고 답변 선정 등의 활동을 하면 포인트를 얻을 수 있습니다. 이를 통해 사용자는 랭킹을 올리거나 다른 기능을 잠금 해제할 수 있습니다.
- 검색 기능: 사용자는 특정 키워드로 질문과 답변을 검색할 수 있습니다.
어노테이션,메서드 정리
- @Autowired
@Autowired는 Spring Framework에서 사용하는 어노테이션으로, 해당 객체의 의존성 주입을 자동으로 처리하는 기능을 제공합니다. 이를 사용하면 객체 생성과 의존성 주입을 별도로 작성하지 않아도 Spring이 자동으로 처리해줍니다. 따라서, 위 코드에서 @Autowired를 사용하면 UserRepository, QuestionRepository, AnswerRepository, TagRepository, PointRepository 등의 객체를 자동으로 생성하여 의존성 주입을 처리합니다.
- isPresent()
isPresent()는 Optional 클래스의 메서드 중 하나로, Optional 객체 내에 값이 존재하는지 여부를 반환합니다. 값이 존재하면 true를 반환하고, 값이 없으면 false를 반환합니다.
예를 들어, userRepository.findByUsername(userDto.getUsername()) 메서드가 Optional 객체를 반환한다면, isPresent() 메서드를 호출하여 Optional 객체 내에 값이 있는지 확인할 수 있습니다.
댓글남기기