Backend/SpringBoot

스프링부트 입문 5. 서비스 구조

오솔히 2024. 3. 2. 09:00

 

 

새로 공부하다 보니 제일 헷갈리는 건

dao, dto, vo, entity, repository 등의 데이터 관련 객체들이다.

예전에 스프링 공부할 때는 dto(=vo)만 주로 사용했었는데 무슨 개념들이 이렇게 많아진 건지..

서비스 구조를 정리하면서 한 번 더 정리해봐야겠다

 


 

일단 스프링부트의 서비스 구조를 크게 보자면!

Client(front) -> Controller -> Service&ServiceImpl -> Dao(Repository)&DaoImpl -> DB

이러한 구조이다! 

 

크게

client에서 controller를 거쳐 service까지 전달되는 데이터 객체는 dto이며

sercvice에서 dao, db까지 전달되는 객체는 entity라고 보면 된다.

 

dto는 vo라고 불리기도 하며, 계층간 데이터 교환을 위한 객체이다. 

client에서 전달받은 데이터를 담고 있는 객체라고 생각하면 된다.

 

그에 반해

entity는 domain이라고도 하며 데이터베이스 테이블에 가까운 객체이며

테이블을 하나의 엔티티라고 생각해도 무방하며

주로 @Entity, @Table, @Builder 등의 어노테이션을 사용한다.

 

그리고 dao는 데이터베이스에 접근하는 객체를 의미하고

repository는 db와 직접 통신하는 '영역'이라고 생각하면 된다.

 

내가 이해한 바로는

front에서 전달받은 데이터를 인터페이스 등에서 비즈니스 로직 처리에 의해 추가나 변경이 될 수도 있으므로

dto, entity를 구별하는 거 같다!

 


 

개발 공부를 하다 보면 사실 용어들이 많이 혼용돼있어

한 번쯤은 사용하는 용어들을 정리하는 것도 좋은 거 같다.

오늘은 공부는 여기서 끝!