해결된 질문
작성
·
228
3
1. 제가 DAO라는 방식으로 먼저 배워서 repository를 DAO라고 생각하고 이해하고 있는데요. 이게 맞는건가요?
2. repository로 바로 비즈니스로직을 수행을 해도 되는데 service로 나눠준 이유는 사용자들이 동시에 사용할 수 있게 하기 위한거라고 알고 있는데 이게 맞는건가요?
답변 6
3
안녕하세요. Jong Hee Park님 좋은 질문입니다^^
1. 제가 DAO라는 방식으로 먼저 배워서 repository를 DAO라고 생각하고 이해하고 있는데요. 이게 맞는건가요?
-> 네 말씀하신데로 DAO라 생각하셔도 무방합니다. 매우 디테일하게 들어가면 DAO는 DB 데이터에 접근하는 모든 기능을 이야기하는 것이고, repository는 엔티티를 관리하는 저장소입니다. 그런데 실무에서 사용할 때 크게 구분하지 않기 때문에 둘다 비슷하게 생각하셔도 됩니다.
2. repository로 바로 비즈니스로직을 수행을 해도 되는데 service로 나눠준 이유는 사용자들이 동시에 사용할 수 있게 하기 위한거라고 알고 있는데 이게 맞는건가요?
-> 개발은 결국 레고 블럭을 잘게 쪼게고 필요한 곳에서 필요한 기능을 조립해서 사용하는 것이 효율적이겠지요. 예를 들어서 주문서비스에서도 회원 리포지토리가 필요하고, 회원 서비스에서도 회원 리포지토리가 필요하다면 같은 회원 리포지토리의 기능을 재사용할 수 있습니다^^ 이렇게 잘게 잘 설계하는 것이 중요합니다. 그리고 서비스 계층은 비즈니스 로직이 있는 곳으로, 리포지토리는 엔티티를 관리하고 저장하는 곳으로 역할이 나누어져 있습니다. 단일 책임 원칙(SRP)를 지키는 것이지요^^
감사합니다.
2
네 공부하시면서 궁금한 내용이 있으면 언제든지 편하게 질문주세요.
제가 직장인이라 저녁 늦은 시간에만 답변을 드릴 수 있어서 다음날이 오기전에 하나라도 더 답해드리고 싶어서 그래요 ㅎㅎ
화이팅!
2
네 맞습니다. 추가로 repository는 엔티티를 관리하는 저장소라 생각하시면 됩니다^^
그런데 실무에서는 크게 관계 구분하지 않고 사용합니다^^ JPA를 사용하면 그냥 repository라고 하고, JPA를 사용하지 않을 때는 DAO라고 많이 합니다.
1
1
아 DAO는 영속성컨텍스트랑 관계 없이 DB에서 데이터만 가지고오는 역할만이고 repository는 영속성컨텍스트랑 관계가 있는거라고 이해하면 될까요?
1
아 이게 Service로 다시 나눠주는 중요한 이유가 재사용이군요. 재사용말곤 다른 이유는 없는건가요? 예전에 다른 곳에서 배울때 사용자가 DB접근을 여럿이서 할때 문제가 생길 수 있어서 service방식으로 구현해줘야된다고 배웠었던거 같아서요. 제가 잘 못 알고 있는건가요?