본문 바로가기
Spring/Spring boot

[SpringBoot] 스프링부트 Repository

by s_hoonee 2023. 3. 9.
반응형

Repository는 데이터베이스와의 상호작용을 담당하는 클래스입니다. 스프링에서 Repository는 JPA를 사용하여 구현되어 있습니다. 따라서 JPA를 사용하면 데이터베이스에 접근하여 CRUD(Create, Read, Update, Delete) 기능을 수행할 수 있습니다.

Repository는 인터페이스로 정의됩니다. 이 인터페이스에서는 JpaRepository 인터페이스를 상속받습니다. JpaRepository는 스프링에서 제공하는 인터페이스로, 기본적인 CRUD 기능을 제공합니다. 따라서 별도의 코딩 없이도 JpaRepository를 상속받으면 간단한 데이터베이스 작업을 수행할 수 있습니다.

예를 들어, 다음과 같이 UserRepository 인터페이스를 작성할 수 있습니다.

@Repository
public interface UserRepository extends JpaRepository<User, Long> {
    Optional<User> findByUsername(String username);
}

여기서 @Repository는 스프링에서 제공하는 애노테이션으로, 해당 클래스를 Repository로 지정해줍니다. JpaRepository<User, Long>는 User 엔티티를 다루며, 엔티티의 기본 키 타입이 Long임을 나타냅니다. 마지막으로 findByUsername(String username) 메서드는 사용자 이름으로 사용자를 찾기 위한 메서드입니다.

이제 UserRepository를 이용하여 데이터베이스에 접근하여 CRUD 작업을 수행할 수 있습니다. 예를 들어, 다음과 같이 UserService 클래스에서 UserRepository를 이용하여 사용자를 등록하는 메서드를 작성할 수 있습니다.

@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;

    public void addUser(User user) {
        userRepository.save(user);
    }
}

위의 코드에서 @Service 애노테이션은 스프링에서 제공하는 애노테이션으로, 해당 클래스를 서비스로 지정해줍니다. UserService 클래스에서는 UserRepository를 Autowired를 이용하여 주입받아서 사용합니다. addUser() 메서드에서는 userRepository.save(user)를 호출하여 사용자를 데이터베이스에 등록합니다.

이와 같이 Repository를 이용하여 데이터베이스와의 상호작용을 처리할 수 있습니다. Repository는 데이터베이스 작업을 추상화한 인터페이스이므로, 데이터베이스 작업이 변경되더라도 Repository 인터페이스만 수정하면 되므로 유지보수가 용이합니다. 또한 JpaRepository를 상속받으면서 제공되는 다양한 메서드를 이용하여 복잡한 데이터베이스 작업도 간단하게 처리할 수 있습니다.