스프링 공부/게시판 프로젝트 만들기

[스프링] 16. MemberRepository 만들기

장아장 2023. 2. 2. 22:35

사실 게시판 만들기를 하다가 대략 2~3주 정도를 쉰 것 같다. 

이유인 즉슨, 

  1. 리포지토리를 테스트하는 방법을 찾다가 여러 강의들을 찾게되었다. 
  2. 공부하다가 로드맵? 이라는 게 있었다. 
  3. 로드맵을 보니까 또 이게 다 뭔지 알고싶었다
    (또 호기심이 미쳐 날뛰어 버렸다)

그래서 이제 할 수 있겠냐고? 

ㅆㄱㄴ

 

가능하니까 이제 다음 과정들을 써보려고 한다. 

일단 리포지토리의 기본적인 기능들을 만들어볼 생각이다. 

 

우리가 백엔드 프로그래밍을 배우면 기본적으로 CRUD라는 것을 듣게 된다. 

  • Create
  • Read
  • Update
  • Delete

이렇게 4가지가 존재한다. 

 

이에 대한 기능들을 Spring Data JPA에서 지원하는 리포지토리를 이용해 만들어보려고 한다. 

package com.board.Board_Upgraded.repository;


import com.board.Board_Upgraded.entity.member.Member;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.Optional;

public interface MemberRepository extends JpaRepository<Member, Long> {

    Optional<Member> findByUsername(String username);

    Optional<Member> findByNickname(String nickname);

    Optional<Member> findByEmail(String email);
}

리포지토리가 뭔지 간단하게 짚어보자면, 

소프트웨어 저장소 또는 소프트웨어 리포지터리(software repository)는 소프트웨어 패키지가 컴퓨터에서 조회되고 설치될 수 있는 저장 위치이다.

(링크를 보고 실망한다면, 여러분!!! 모두가 수정하는 사전인 만큼, 집단지성을 믿어봅시다!)

 

이렇게 인터페이스를 만들었다면, Override를 해서 다른 클래스에서 이를 구현해주어야 한다. 하지만 하지 않는다.

 

왜?

이런식으로 JpaRepository<Class, Id>는 모든 것을 만들어둔 상태이고, 이걸 가져다 쓴 것이다. (물론 이게 완전한 지식은 아니다. 이런 지식이 궁금하다면 따로 공부해보는 것이 좋을 것 같다. 나도 공부해보았는데, 진짜 빠져들어서 배우기에 미쳤었다. )

 

이보다 더 자세한, 예를 들면 조건들을 여러개 가져와 검색하는 방식, 검색 시 결과의 양을 조절해 티스토리 메인 페이지처림 여러 페이지로 게시물을 나누는 방식들을 차후 수정할 계획이다. 

 

이름을 짓는 방식은 find~~~By[인스턴스명]으로 진행된다. 이 때, 인스턴스명은 @Column(name~~)에 있는 이름이 아닌, 클래스에 자바로 구현한 인스턴스 명이다.

 

이제 이걸 테스트해볼 차례이다. 이건 다음 게시물로 오시면 됩니다~~

나때는 이런걸 유우머라고 했단 말이지~~