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를 상속받으면서 제공되는 다양한 메서드를 이용하여 복잡한 데이터베이스 작업도 간단하게 처리할 수 있습니다.
'Spring > Spring boot' 카테고리의 다른 글
[SpringBoot] 스프링부트 IoC와 DI의 이해 (0) | 2023.05.22 |
---|---|
[SpringBoot] 스프링부트의 특징 (0) | 2023.03.09 |
[SpringBoot] 스프링부트 Service (0) | 2023.03.09 |
[SpringBoot] 스프링부트 Controller (0) | 2023.03.09 |
[SpringBoot] 스프링부트 Spring Boot란? (0) | 2023.03.09 |