본문 바로가기
Backend/Spring

[Spring Boot ①] 회원 기능 실습 - Repository (스프링부트 입문 / JPA / 스프링부트 기초 / CRUD 실습 / 인텔리제이)

by 비전공자 기록광 2021. 7. 12.
반응형

스프링 부트 공부를 시작했다.

이전 스프링 관련 내용은 밑에서 참고...

 

▶ 스프링 개념

2021.04.01 - [IT 독학/WEB] - Spring Framework (스프링 개념 / 스프링 기초 / 스프링 입문 / 프레임워크 개념 / 웹개발 / 웹기초 / 웹독학 / 백엔드 개발자 / 프로그래밍)

 

▶ 스프링 실습

2021.04.18 - [IT 독학/WEB] - [Spring _MVC ①] CRUD 게시판 구현 개발환경 설정 (STS / MVC 패턴 / Mybatis / 스프링 입문 / 백엔드 / 웹개발)

 

 

이번 실습은 인프런 스프링 부트 강의 중 가장 유명한 김영한 선생님의 강의를 토대로 만들었다.

무료고 강의 자체가 짧아 금방 볼 수 있다. 추천 추천!! 😲😲

 

https://inf.run/odFb

 

[무료] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 인프런 | 강의

스프링 입문자가 예제를 만들어가면서 스프링 웹 애플리케이션 개발 전반을 빠르게 학습할 수 있습니다., 스프링 학습 첫 길잡이! 개발 공부의 길을 잃지 않도록 도와드립니다. 📣 확인해주세

www.inflearn.com

 

 

스프링 부트 회원 기능 실습

 

JDK는 16, IDE는 IntelliJ에서 진행했다.

강의에서는 11버전을 추천했지만 당장 16버전으로 쏘카 수업을 듣고 있어서..

 

▶ MS open source JDK 16 설치하기

2021.06.25 - [IT 독학/JAVA] - Microsoft Open JDK 설치 (ms Java openJDK / openJDK SE 16)

 

 

1. 웹 프로젝트 생성

https://start.spring.io/

 

이 사이트를 통해 초기 프로젝트를 쉽게 생성할 수 있다.

 

프로젝트 빌드 툴을 gradle로 설정해주고 스프링 부트 버전을 적당히 골라준다. SNAPSHOT 버전은 아직 개발이 덜 된 버전이라 웬만하면 쓰지 말라고 한다.

 

+ project build tool

프로젝트 빌드 툴은 필요한 라이브러리를 가져와 제공해주고 빌드라이프사이클을 관리해주는 등 역할을 한다.

 

 

java 버전을 자신의 jdk 버전에 맞게 골라주고 

라이브러리를 spring web과 thymeleaf 만 골라주고 생성해준다.

 

이렇게 되면 zip 파일이 다운된다.

압축을 풀고난 후 

 

 

build.gradle 파일을 인텔리제이로 열어주면 된다. 

 

 

내가 설정한 대로 잘 되어 있는걸 볼 수 있다.

 

 

밑의 책 참고

https://book.naver.com/bookdb/book_detail.nhn?bid=15871738

 

스프링 부트와 AWS로 혼자 구현하는 웹 서비스

가장 빠르고 쉽게 웹 서비스의 모든 과정을 경험한다.경험이 실력이 되는 순간!이 책은 제목 그대로 스프링 부트와 AWS로 웹 서비스를 구현합니다. JPA와 JUNIT 테스트, 그레이들, 머스테치, 스프링

book.naver.com

 

 

 

인프런 '스프링 부트 입문' / 김영한 캡쳐

 

 

2. 회원 도메인 & 레포지토리 생성

일단 회원에 대한 것들을 만들어준다.

 

2-1. Member.java 클래스 생성

src > main > java > hello.hellospring > domain 패키지 생성

 

src > main > java > hello.hellospring > domain > Member 자바 클래스 생성

 

멤버 클래스는 간단히 id, name의 멤버변수와 getter&setter을 만들어줬다.

 

 

2-2. MemberRepository.java 인터페이스 생성

src > main > java > hello.hellospring > repository 패키지 생성 > MemberRepository.java 인터페이스 생성

 

레포지토리 인터페이스로 먼저 틀을 생성해줬다.

 

여기서 Optional이란 id나 name으로 회원을 검색할 시 결과가 없을 수도 있어 감싸준 것이다.

코틀린에서 ?와 같은 역할을 한다.

 

 

2-3. MemoryMemberRepository.java 클래스 생성

repository 패키지에 인터페이스를 상속받는 구현 클래스를 만들어줬다.

implements method도 해주면 자동으로 메소드가 생성된다.

 

 

 

3. 레포지토리 메소드 작성

이제 이 구현 레포지토리에 메소드를 작성해준다.

 

3-1. save( )

회원을 생성해주는 save메소드는 담아줄 sotre hashmap을 선언해준다.

 

사용자가 회원가입하면 store에 담겨 저장되는 것이다.

또 id는 자동으로 증가하는 sequence로 설정해준다.

id는 setter로 설정해주고

담을때는 put으로 map에 담아줬다.

 

 

3-2. findById( ) / findByName( )

 

getter로 가져와 반환해준다.

회원의 getName이 사용자가 검색한(파라미터로 넘어온) name과 같은지 필터링해준다.

 

 

 

3-3. findAll( )

 

회원을 모두 출력하는 findAll은 store에 담긴 모든 값들을 arrayList로 가져온다.

 

 

4. 서비스 생성

컨트롤러로 넘어온 것들을 레포지토리에 저장하고 호출하는 비즈니스 로직을 만들어준다.

 

4-1. MemberService.java

서비스는 레포지토리에 만들어둔 구현체와 맞춰 만들어주되,

좀 더 서비스에 가까운 이름으로 메소드를 만들어준다.

 

레포지토리에서는 회원가입을 save로 했다면 서비스에서는 join으로 해줬다.

 

 

4-1-a. 회원가입 Join( )

 

우리가 회원가입을 하기 전 이 회원이 존재하는지 아닌지 먼저 검증을 먼저 해줬다.

memberRepository에 name으로 검색해 만약 존재하면 "이미 존재하는 회원입니다"라는 예외를 띄워주기로 했다.

 

이 회원검증 메소드는 원래 회원가입 안에 있었지만

효율적인 코드 관리를 위해 extract method : ctrl + alt + m 를 해줬다.

 

 

 

4-1-b. 회원 전체 출력 findMembers( ) / 회원 id로 검색 findOne( )

회원 검색에 관한 메소드는 간단히 레포지토리에서 만들어준 메소드를 호출해 리턴해준다.

 

 

 

 

 

반응형

댓글