코딩공작소
회원가입 검증 API 및 멤버 별 투두 연관관계 설정 개발 본문
일단 회원가입 시에 중복된 회원 및 아이디에 대한 유효성 검증을 개발했다.
페이지 이동없이 API 응답 값을 전달받기 위해서는 ajax 및 RestController로의 변경이 필요했다.
회원가입 페이지에서 ajax를 통해 회원가입을 시켜주는 로직으로 변경설정 하였다.
API응답 값에 따라서 그 다음으로의 동작들을 분기 처리했다.
그리고 변경된 API
기존에는 로그인 페이지로의 뷰를 전달했었는데, 회원가입 로직을 처리하고 유효성 검증을 통해 바디값을 채워 전달하도록 변경하였다.
먼저 회원가입 시 전달받은 아이디를 통해 멤버를 조회해 기존의 멤버와 중복이 있는지 확인하는 로직을 추가해줬다.
그리고 스프링 시큐리티 기능을 통해서 이미 인증된 회원의 정보를 가져오는 로직을 통해 멤버의 정보를 조회해서
투두를 처음 등록할 때, 멤버의 아이디를 투두에 같이 삽입해주도록 수정했다.
이 연관관계를 설정하기 위해 다 관계에 놓인 투두 엔티티에 멤버아이디를 조인컬럼으로 새롭게 추가하였다.
즉시로딩과 지연로딩에 대하여))) 통상적으로는 지연로딩으로 해야 더욱 안정적이다. 하지만, 무조건 조인해서 사용되는 로직이라면 즉시로딩도 상관없다. 다만 실무에서는 간단한 테이블이 없을것이므로 지연로딩이 안정적이고 좋다.
그래서 투두를 조회하게 되면 투두가 등록되었고, 어떤 회원이 등록했는지 member_id를 같이 저장하도록 수정했다.
결과적으로,
두명의 회원이 있다.
각각의 투두들을 등록했고, 투두들에는 각각의 멤버아이디가 걸려있다.
투두 리스트를 조회할 때, 인증되어 있는 멤버를 조회하고, 그 멤버아이디를 통해 투두리스트를 조회하는 쿼리를 추가하였다.
JpaRepository를 상속하는 새로운 Impl파일을 만들어서 Todo엔티티에서 Member_id를 조건절로 사용하여 각 멤버 별 투두를 조회하도록 하는 기능으로 개발하였다.
각 멤버별로의 투두들이 노출되도록 화면이 수정되었다.
추가적으로 로그아웃기능을 넣었다.
화면에서 보다시피 제목 우측에 보면 로그아웃 버튼이 있다.
로그아웃을 폼을 클릭하게 되면 컨텍스트에 있던 정보들을 날려주고 로그인페이지로 리다이렉트하도록 개발하였다.
여기까지 해서, 기본적으로 EC2, RDS 환경에서 하나의 서비스를 완성했다.
스프링부트와 JPA를 사용했고, 각 멤버 별 투두들을 관리하여 보여주는 화면을 개발했다.
스프링 시큐리티 기능을 통해 회원가입, 로그인, 로그아웃 기능을 구현했다.
또한 ManyToOne 조인을 사용하여 엔티티간 연관관계를 맺도록했다.
추가적으로 이제 EC2에 도커를 설정해보고 도커위에서 서비스를 기동시키는 실습을 진행한 뒤에
배치 소스를 개발하여 람다에서 돌려보는 기능을 추가해볼까 한다.
여유가 되면 로그까지 !!
멤버 도메인에 닉네임 컬럼을 추가하여 화면에 노출하였다.
먼저 selectAll API에 닉네임과 투두리스트 값을 맵 형태로 변환해주도록 바꿨다.
처음에는 투두리스트만 변환했는데, 투두가 0건인 경우에 대해서 멤버의 닉네임을 전달해줄 수 없어 맵형태로 바꿨다.
리스트는 스트림 함수와 빌더를 사용하여 반환해줬다.
회원가입 시 RequestBody에 닉네임 영역을 추가해주고 회원가입 시 해당 데이터를 저장해준다.
멤버 도메인에 닉네임을 추가해주고, selectDto를 통해 결과를 반환하여 초기화면 초기화에 사용해준다.
처음에는 그냥 기본 도메인을 반환해주었는데, 그렇게 하니까 멤버 도메인의 개인정보들까지 반환되어서 큰 문제가 될 뻔했다.
예전 강의에서도 결과 값을 리턴해줄때는 어지간하면 DTO를 만들어서 반환해주라는 이유를 다시금 느꼈다.
회원가입 페이지에서 닉네임 영역 추가건
쨘 ~
'어플리케이션개발 > 토이프로젝트(취미)' 카테고리의 다른 글
향 후 계획! (2) | 2024.12.22 |
---|---|
EC2 docker 설치 및 docker 환경 서비스 구동 + docker compose (1) | 2024.12.11 |
로그인 및 회원가입 페이지 & 스프링 시큐리티 개발 최종 정리 (0) | 2024.12.04 |
회원 도메인 추가/회원가입 및 Todo 도메인과 연결 (0) | 2024.11.19 |
Todo 메인 페이지 기능 개발 및 서버 수정 (2) | 2024.11.03 |