@Repository
🗄 @Repository
정의
@Repository는 Spring에서 데이터 접근 계층(DAO, Data Access Object)을 나타내는 애너테이션이다.
데이터를 읽고 쓰는 클래스가 Repository임을 명확히 표시하며, 예외 변환 기능과 함께 사용하는 데 의미가 있다.
🧩 역할
- 데이터 접근 계층을 구분한다.
- Spring의 예외 변환 기능과 연결된다.
- JPA, JDBC, Querydsl 등 데이터 계층에서 사용된다.
🛠 사용법
@Repository 적용 예시
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
User findByEmail(String email);
}
사용자 정의 Repository 예시
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
@Query("SELECT u FROM User u WHERE u.name = :name")
User findByName(@Param("name") String name);
}
📌 주요 기능
| 기능 | 설명 |
|---|---|
@Repository |
DAO 역할을 수행하는 클래스임을 나타낸다. |
JpaRepository<T, ID> |
기본 CRUD 메서드를 제공한다. |
@Transactional(readOnly = true) |
조회 작업에 트랜잭션을 적용할 수 있다. |
⚠️ 장점과 단점
장점
- Spring의 예외 변환 기능을 자동으로 제공한다
- DAO 계층을 명확히 구분할 수 있다
- Spring Data JPA와 함께 쓰면 CRUD를 쉽게 활용할 수 있다
단점
- Repository 설계가 복잡해지면 유지보수가 어려워질 수 있다
- 복잡한 쿼리는 Querydsl 같은 별도 도구가 필요할 수 있다
📌 정리
@Repository는 데이터 접근 계층을 나타내는 애너테이션이다.- 예외 변환과 함께 사용하면 의미가 더 커진다.
- Spring Data JPA에서 가장 자주 만나는 저장소 계층 애너테이션 중 하나다.
댓글남기기