mvc도 그나름대로 구현하는데 스타일들이 있는거 같던데 가장 최신 혹은 쓸만한 구조는 어떤 것 이며 어디서 배울 수 있음? 배울때마다 용어도 조금씩 다르고 구조도 조금씩 달라서 헷갈림
예를 들어 국비에서 처음 배울땐 dto 였고 취업해서는 그걸 vo로 불렀으며 김영한 강의에서는 도메인 엔티티라고 부르는거 같음
뭐 찾아보니까 dto vo 약간의 차이가 있지만 거의 비슷 한거같음
위에 말한 구조라 함은 어디서는 레포지토리를 인터페이스 수준까지만 구현하고 오토와이어드 붙여 쓰는데 인강들을때는 impl받아서 구현해 놓은 리포지토리를 사용함
보통 controller는 컨트롤러이끼리 따로 모아두는거 같던데
service serviceimpl vo의 경우 기능별로 묶어두는 경우도 봤고
service끼리 모아두고 serviceimpl끼리 vo는 vo끼리 모아두는 경우도 봤음
프로젝트마다 mvc를 구현하는 방법이 다 달라서 정석이라고 부를만한 구조를 어디서 배울수 있는지 궁금함
예를 들어 국비에서 처음 배울땐 dto 였고 취업해서는 그걸 vo로 불렀으며 김영한 강의에서는 도메인 엔티티라고 부르는거 같음
뭐 찾아보니까 dto vo 약간의 차이가 있지만 거의 비슷 한거같음
위에 말한 구조라 함은 어디서는 레포지토리를 인터페이스 수준까지만 구현하고 오토와이어드 붙여 쓰는데 인강들을때는 impl받아서 구현해 놓은 리포지토리를 사용함
보통 controller는 컨트롤러이끼리 따로 모아두는거 같던데
service serviceimpl vo의 경우 기능별로 묶어두는 경우도 봤고
service끼리 모아두고 serviceimpl끼리 vo는 vo끼리 모아두는 경우도 봤음
프로젝트마다 mvc를 구현하는 방법이 다 달라서 정석이라고 부를만한 구조를 어디서 배울수 있는지 궁금함
mvc라는 단어를 잘못 이해하신 것 같은데요 말씀하신 것 중에 어느것도 mvc와 관련된게 없습니다 전부 다 레이어드 아키텍쳐 이야기에요
아 그 아키텍쳐요 어떤식으로 하는게 좋을까요 혹은 어떤 아키텍쳐가 좋은 구조인지 어디서 배울 수 있나요
dto vo 도메인엔티티 전부 다 다른거에요 약간의 차이가 있지만 비슷하다고 생각했다면 제대로 이해 못한거에요 dto는 레이어 간 전송을 처리하기 위해서 있고 vo는 그냥 값객체에요 아무 의미 없는거 용도가 다른데 당장 보이는 형태가 비슷하다고 해서 그게 정말 비슷한거라고 생각하면 안돼요 심지어 도메인엔티티는 더더욱 다른건데, 우리가 객체지향에서 배운 속성과 행위를 지닌 바로 그 객체 클래스에요
하... 비슷해보여도 복잡하네요 공부할게 한두개가아니네
어디서는 레포지토리를 인터페이스 수준까지만 구현하고 오토와이어드 붙여 쓰는데 인강들을때는 impl받아서 구현해 놓은 리포지토리를 사용하는거는 정확히는 그 인강을 봐야 알겠는데요 spring data jpa를 사용한다는 가정 하에서, 인터페이스 수준까지 구현한건 기본 crud와 메서드명 기반으로 동적으로 생성되는 쿼리 기능만 쓰겠다는거고 QueryDSL으로 커스텀 한 쿼리를 날릴거면 impl로 구현해서 그 안에 작성합니다 이건 정확히 어떤 케이슨지 봐봐야 알겠어요
프로젝트 디렉토리 구조(혹은 패키지 구조)는 정답이 없어요. 각각 장단점이 있습니다 주로 쓰는 방식으로는 1. 각 레이어 별로 디렉토리를 나눈 후에 그 안에서 도메인 별로 다시 디렉토리를 나누는 경우와(양이 적으면 도메인별로는 안나누기도 함) 2. 도메인 별로 디렉토리를 나누고 그 안에서 다시 레이어 별로 디렉토리를 나누는 경우가 있는데요(양이 적으면 레이어별로는 안나누기도 함) 전자는 기술(레이어가 곧 기술임)을 중심으로 모아둔거고 후자는 비즈니스를 중심으로 모아둔겁니다
규모가 작을때야 기술 중심으로 모아두는게 다루기 편한데, 규모가 커질수록 몇가지 문제가 발생합니다 단순하게는, 디렉토리가 점점 많아지고 클래스가 많아지니 한개 비즈니스에 대한 내용을 보기가 힘들어진다는 문제가 있습니다 스크롤을 한참 올려서 클래스 파일 하나 열고 다시 한참 내려서 클래스 파일 하나 열고 하는 식으로요 조금 더 고차원적으로는, 도메인들이 이리저리 얽혀버린다는 문제가 있습니다 도메인들이 얽히면 나중에 별도 서비스로 분리해내기가 너무 힘들고 분리하지 않더라도 코드들이 전반적으로 다 잡탕이 돼버립니다 잡탕이 된 코드는 테스트하기도 힘들고 유지보수하기도 힘듭니다
답변 ㄱㅅㄱㅅ 스프링 기본기부터 부족함을 느끼네여
님 질답 새 글로 정리해놨어요