Skipalong's tistory
231219 TIL - JpaRepository 본문
오늘은 JPA 심화 강의를 듣던 중 지금까지 무심코 사용했지만 자세한 내용은 잘 알지 못했던 부분에 대해 정리를 해 보겠다.
평소에는 Controller-Service-Repository 레이어 를 사용하면서 Repository는 간단하게 인터페이스로 만들어주고 JpaRepository를 상속받아주는것으로 구현을 하면 Repository의 필요한 기능들을 거의 다 사용가능해서 좀 더 알아보려고 하지 않았었다. 하지만 이번 JPA심화 강의를 들으면서 이것이 어떻게 가능한지, 실무에서는 어떻게 사용하는지 배운 것이 있어서 정리해보겠다.
우선 상속받는 JpaRepository가 어떤식으로 구성되어있는지를 알게 되었다.
JpaRepository는 CrudRepository를 상속 받아 save, delete, exists등의 메서드를 사용가능한 것이었고, PagingAndSortingRepository 를 상속받아 findAll(Sort), findAll(Pageable)등의 메서드를 사용가능한 것 이었다.
이러한 여러 Repository 인터페이스를 상속받아 자주쓰는 메서드들을 간단하게 사용가능한 것이었다.
하지만 오늘 배운 내용에서는 실무에서는 이러한 메서드들을 모두 사용가능하기 때문에 리스크가 있어서 오히려 이러한 기능들을 제한하여 사용한다고 한다. 그래서 어떻게 Repository기능들을 제한하는 지 정리해보겠다.
오늘 정리할 내용은 가장 많이 사용된다고 하는 @RepositoryDefinition 어노테이션을 인터페이스에 붙여주는 방법이다.
원래는 이렇게 되어있던 UserRepository에서는
이렇게 save,delete,count 등등 모든 기능들을 모두 사용할 수 있었지만
이렇게 @RepositoryDefinition 어노테이션을 사용해주면
이렇게 UserRepository에 정의해둔 기능만을 사용할 수 있게 된다.
이렇게 개발 공부를 할 때에는 편하게 사용하던 기능들을 실무에서는 여러 리스크 때문에 오히려 기능을 줄여야하는 일도 있는 것 같다. 이제 이번주 공부를 하고 나면 최종프로젝트 전 마지막 팀프로젝트와 최종프로젝트만 남기 때문에 최대한 많은 기능을 다룰 수 있게 잘 준비하고 심화주차라 내용이 어렵기는 하지만 최대한 많이 머리속에 남기고 팀프로젝트 때 많이 활용을 해봐야 최종프로젝트를 잘 수행 할 수 있을 것 같다. 내일도 화이팅!
'TIL' 카테고리의 다른 글
231221 TIL - @DynamicInsert, @DynamicUpdate (1) | 2023.12.21 |
---|---|
231220 TIL - CI/CD (0) | 2023.12.21 |
231218 TIL -Scheduler, Cron (0) | 2023.12.18 |
231215 TIL - Paging, Sorting (0) | 2023.12.16 |
231214 TIL - @PropertySource, @Value (0) | 2023.12.14 |