일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- JWT
- programmers
- oauth
- javascript
- Project
- jenkins
- SseEmitter
- WIL
- html
- 항해99
- Stream
- jQuery
- web
- Anolog
- real time web
- Java
- flask
- Hibernate
- DI
- spring
- JPA
- google oauth
- Spring Security
- 생명주기 콜백
- bean
- hanghae99
- cookie
- python
- session
- server send event
- Today
- Total
끄적끄적 코딩일지
[Spring]이미지 월드컵 만들기(4) - 기능 설계하기 본문
저번 글에서 필요한 데이터를 저장할 Table을 구현하였다.
2022.05.18 - [Project/[Spring] 이미지 월드컵 만들기] - [Spring]이미지 월드컵 만들기(3) - DB Entity 설계하기
이제 해당 데이터를 활용할 기능을 만들 차례이다.
일단 필요한 기능을 정의해 보자
단 데이터를 단순 조회하고 쓰고 지우는 기능은 제외해보자
1. ID 중복체크( 회원가입 ) |
2. PW 암호화 |
3. 이미지별 우승 비율 계산 |
4. 이미지 목록 셔플 알고리즘 |
5. 대회 진행 알고리즘 |
일단 바로 생각나는것은 이정도뿐이다.
그럼 하나씩 살펴보자
일단 1번. ID중복체크는 입력한 loginId의 중복 결과를 조회해야 한다.
때문에 서버에서 DB를 조회해야 함으로 REST API으로 개발하기로 결정.
2번도 마찬가지이다. 입력한 ID을 Spring Security를 통해 암호화 하여 하기로 결정.
Spring Security는 조금밖에 알지 못하는데 이 부분에 대해 공부좀 해야겠다.
나머지 3,4,5 는 굳이 Backend에서 수행할 필요가 없다는 생각이 들었다. 이 기능들은 Browser에서 처리가 되도록 Javascript를 사용하여 구현할 것이다.
일단 3,4,5 번 기능들은 제외하고 Spring에서 DB에서 CRUD가 가능하도록 해 보자
JPARepository의 등장은 지금생각해도 신의 한수였다. 예전에 처음 개념을 배울때 일일히 Query문을 작성하여 기능을 구현했던걸 생각하면 얼마나 끔직한지....
Interface에 JPARepostitory를 extends하면 기본적인 CRUD를 알아서 만들어준다. 추가로 필요한 Query문을 위의 형태로 작성하면
알아서 Query문을 수행하여 결과를 반환해준다.
그리고 @Repository를 붙여서 해당 interface를 bean에 등록하도록 하자
나머지 Member,WorldCupGame,WorldCupItem 또한 같이 동일하게 만든다음 필요한 Query문을 작성한다.
※ ID중복체크하는것은 count를 사용했다. select count(*) from Member where loginid=입력id 을 하면 조건에 맞는 개수를 반환하는데 0인지만 확인하면 ID가 중복되는지 알 수 있다.
Query를 보면 대충 어떤 기능이지 알수 있을 것이다.
그다음 해당 Interface를 사용하는 Service를 구현.
이로써 기능을 사용하기 위한 준비가 완료되었다.
다음 글에서는 Spring Security 기능을 적용해보도록 하겠다..
'Project > [Spring] 이미지 월드컵 만들기' 카테고리의 다른 글
[Spring]이미지 월드컵 만들기 (6)- 이미지 업로드(2) (0) | 2022.05.24 |
---|---|
[Spring]이미지 월드컵 만들기(5) - 이미지 업로드(1) (0) | 2022.05.23 |
[Spring]이미지 월드컵 만들기(3) - DB Entity 설계하기 (0) | 2022.05.18 |
[Spring]이미지 월드컵 만들기(2) - Database 연결 (0) | 2022.05.18 |
[Spring boot]이미지 월드컵 만들기(1) - 프로젝트 세팅 (0) | 2022.05.18 |