repository랑 service 개념 질문입니다.
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
아 DAO는 영속성컨텍스트랑 관계 없이 DB에서 데이터만 가지고오는 역할만이고 repository는 영속성컨텍스트랑 관계가 있는거라고 이해하면 될까요?
1
아 이게 Service로 다시 나눠주는 중요한 이유가 재사용이군요. 재사용말곤 다른 이유는 없는건가요? 예전에 다른 곳에서 배울때 사용자가 DB접근을 여럿이서 할때 문제가 생길 수 있어서 service방식으로 구현해줘야된다고 배웠었던거 같아서요. 제가 잘 못 알고 있는건가요?
OrderServiceTest 상문주문 테스트 시 update 쿼리 문의
0
27
1
sdk 설정 오류
0
64
2
오탈자 - @Transactional
0
60
1
src/test/resources 테스트 경로 문제
0
55
1
상품 등록후 H2 db 출력 순서 바꿀 수 있나요?
0
69
1
MemberRepositoryTest 실행오류
0
86
1
boot 4.x >>> trasasction rolled back log & p6spy(영한님, 수업 자료 업데이트 해주시면 감사하겠습니다!!)
1
191
2
강의 마지막 QueryDSL 사용 부분 질문있습니다
1
151
2
클라이언트에서 isbn과 author 수정 요청을 한 경우에 대해 질문드립니다.
0
56
1
도메인 모델 패턴 vs 트랜잭션 스크립트 패턴
0
79
1
기본 생성자
0
66
1
h2 DB 연결시 jdbc url 변경 이유가 궁금합니다.
0
106
1
멤버서비스테스트 부분에서 막힙니다.
0
171
4
실무에서도 EntityManager를 이용해서 많이 작업하는 편일까요?
0
122
1
초반에 h2 다운로드 과정 꼭 필요한가요?
0
128
2
자신 필드에도 get으로 접근하는 이유가 있을까요?
0
118
1
24분 27초 연관관계 편의 메서드 위치
0
118
1
단건 주문만 가능하게 한건 의도한 부분이신가요?
0
114
2
빌드 툴, Gradle
0
63
1
h2연결은 된 것 같은데 엔티티 테이블까지 작성 후 확인해보아도 테이블이 안보입니다
0
80
2
Repository에서 EntityManager 주입 방식 차이
0
96
1
롬복과 사용자 정의 setter 메서드
0
77
1
주문 목록 조회 fetch join 질문드립니다
0
90
1
dirty checking 질문드립니다.
0
86
1





