인프런 영문 브랜드 로고
인프런 영문 브랜드 로고
채널톡 아이콘

인프런 커뮤니티 질문&답변

하치령님의 프로필 이미지

작성한 질문수

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

QueryDSL 소개

프로젝트 폴더 구조와 강의 일정에 관하여 질문이 있습니다.

작성

·

16K

64

1. 실무에서 프로젝트 구현시 보통 폴더 구조를 어떤식으로 하시나요?

프로젝트를 하는데 폴더 구조를 어떻게 해야 좋을지 궁금합니다. 강의와 같이 api 패키지를 하나 만들고 Controller 클래스 안에 static 클래스로 dto를 만드시나요? 아니면 api 패키지 안에서 다시 패키지들로 나누시나요?

2. 별도 강의들에 대한 일정이 혹시 있으신가요? 있으시다면 언제쯤 강의를 들을 수 있을까요?

좋은 강의 올려주셔서 너무 잘 듣고 있습니다. 감사합니다.

답변 9

114

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요 하치령님^^ 좋은 질문입니다.

먼저 1번부터 말씀드릴께요.

1. 실무에서 프로젝트 구현시 보통 폴더 구조를 어떤식으로 하시나요?

-> 뭔가 약팔이 처럼 실무에서는 이렇게 하는게 정석입니다. 라고 말씀드리면 좋겠지만... 솔직하게 말씀드려서 저는 지금도 프로젝트를 진행할 때 마다 패키지 구조를 고민합니다. 왜냐하면 이 부분은 딱 정해진 정답이 있다기 보다는. 현재 프로젝트의 상황과 규모에 따라서, 거기에 맞는 유지보수하고 확장하기 쉬운 구조가 있기 때문입니다.

예를들어서 블로그 프로젝트가 정말 너무 작아서 단순하게 API 하나를 처리하면 끝난다고 하면, 그냥 패키지 하나에 다 몰아 넣고, 최대한 단순하게 처리하는 것이 좋다 생각합니다.

project

그런데 프로젝트에 요구사항이 추가되면서 기능이 증가하면 이제 컨트롤러, dto, entity, 비즈니스로직을 처리하는 serivce 등으로 패키지를 분할하는게 의미를 가지겠지요.

project

- controller

- dto

- entity

- serivce

여기서 프로젝트가 정말 더 커져서 여러 도메인이 추가되면 도메인 단위로 상위 패키지 개념을 더 추가할 수 있습니다.

예를 들어서 단순히 블로그 API 만 제공하다가, 회원 기능이 추가되면 다음과 같이 될 수 있겠지요.

project

- blog

    - controller

    - dto

    - entity

    - service

- member

    - controller

    - dto

    - entity

    - service

그런데 이렇게 구성해보니까, 블로그 컨트롤러에서 회원과 관련된 서비스를 자주 사용합니다. 엔티티들도 서로 연관관계가 생깁니다. 그래서 다음과 같은 구조로 변경합니다.

project

- controller

  - blog

  - member

- service

    - blog

    - member

- entity

    - blog

    - member

여기서 더 나아가면 패키지 구조를 넘어서 멀티모듈 프로젝트로 가면서 프로젝트 자체를 여러개로 구성할 수도 있습니다.

제가 이 과정을 통해서 말씀드리고 싶은 진짜 핵심은!

프로젝트가 성장함에 따라 프로젝트 구조도 현재 상황에 맞추어 성장하고 변경할 수 있어야 합니다.

결국 이 부분은 진지한 고민과 학습 그리고 다양한 경험을 통해서 길러질 수 있는 아키텍트의 중요한 기본기라 생각합니다.

단순한 질문을 제가 좀 길게 답변을 드린 것 같네요 ㅎㅎ 다시 질문으로 돌아오면^^;;

질문: 강의와 같이 api 패키지를 하나 만들고 Controller 클래스 안에 static 클래스로 dto를 만드시나요? 아니면 api 패키지 안에서 다시 패키지들로 나누시나요?

-> 이 부분은 해당 컨트롤러만 사용하는 DTO면 그 안에 만들고, 여러 클래스가 공유해야 하면 외부에 별도로 생성합니다. 패키지는 프로젝트가 복잡해지면 추가하고, 프로젝트가 단순하면 별도의 패키지를 만들지 않고 같이 둡니다.

2. 별도 강의들에 대한 일정이 혹시 있으신가요? 있으시다면 언제쯤 강의를 들을 수 있을까요?

-> 조만간 공지를 할 예정이기는 합니다. 다음 강의는 실무용 스프링 데이터 JPA 그리고, QueryDSL 관련 강의를 준비하고 있습니다. 이 두 강의를 완성하면 제가 처음에 기획한 실무 강의의 큰 축이 완성됩니다. 목표는 순서대로 11월말, 12월말을 목표로 하고 있습니다. 올해까지 두 강의를 완성하고, 좀 쉬어야 겠네요 ㅎㅎ

강의를 좋게 봐주셔서 진심으로 고맙습니다. 다음 강의도 좋은 강의로 보답할께요^^!!

5

하치령님의 프로필 이미지
하치령
질문자

 자세한 답변 감사합니다:) 김영한님이 올려주신 친절한 답변 덕분에 또 이렇게 배워갑니다.

스프링 데이터 JPA, QueryDSL 강의도 잘 부탁드립니다^^

2

강성욱님의 프로필 이미지

배워갑니다 ㅎㅎ

1

수강기계님의 프로필 이미지

저도 배워갑니다.

0

gwon님의 프로필 이미지

배워가유

 

0

성장하는개발자님의 프로필 이미지

감사합니다

0

김귀인님의 프로필 이미지

감사합니다

0

강철님의 프로필 이미지

감사합니다.

0

PENEKhun님의 프로필 이미지

감사합니다