-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[#1] repository에서 도메인 모델 분리 #5
Merged
Changes from 4 commits
Commits
Show all changes
5 commits
Select commit
Hold shift + click to select a range
4a1edea
service와 repository에서의 도메인 모델 의존관계 방향 변경
shine-17 0e3ce57
repository에서 도메인 모델 분리 (3-layer 아키텍처 -> 헥사고날 아키텍처)
shine-17 6f5842a
Merge branch 'feature/1' of https://github.com/f-lab-edu/bookcafe int…
shine-17 acf3dda
대출 기간 객체 분리에 따른 변환 mapper 및 테스트 코드 수정
shine-17 a1de177
추상 팩토리 패턴 적용
shine-17 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,10 +1,10 @@ | ||
package com.study.bookcafe.dao; | ||
|
||
import com.study.bookcafe.entity.BookEntity; | ||
import com.study.bookcafe.domain.Book; | ||
|
||
import java.util.List; | ||
|
||
public interface BookRepository { | ||
BookEntity findById(long bookId); | ||
List<BookEntity> findByIdList(List<Long> bookIdList); | ||
Book findById(long bookId); | ||
List<Book> findByIdList(List<Long> bookIdList); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,13 +1,12 @@ | ||
package com.study.bookcafe.dao; | ||
|
||
import com.study.bookcafe.entity.BorrowEntity; | ||
|
||
import com.study.bookcafe.domain.Borrow; | ||
import java.util.List; | ||
|
||
public interface BorrowRepository { | ||
|
||
BorrowEntity findById(long borrowId); | ||
BorrowEntity save(BorrowEntity borrowEntity); | ||
List<BorrowEntity> save(List<BorrowEntity> borrowEntityList); | ||
Borrow findById(long borrowId); | ||
Borrow save(Borrow borrow); | ||
List<Borrow> save(List<Borrow> borrowList); | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,7 @@ | ||
package com.study.bookcafe.dao; | ||
|
||
import com.study.bookcafe.entity.MemberEntity; | ||
import com.study.bookcafe.domain.Member; | ||
|
||
public interface MemberRepository { | ||
MemberEntity findById(long memberId); | ||
Member findById(long memberId); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,16 +1,17 @@ | ||
package com.study.bookcafe.entity; | ||
|
||
import com.study.bookcafe.vo.Period; | ||
import lombok.Builder; | ||
import lombok.Getter; | ||
|
||
import java.sql.Timestamp; | ||
import lombok.NonNull; | ||
|
||
@Builder | ||
@Getter | ||
public class BorrowEntity { | ||
private long id; // 대출 ID | ||
@NonNull | ||
private MemberEntity member; // 회원 | ||
@NonNull | ||
private BookEntity book; // 도서 | ||
private Timestamp borrowDate; // 대출 날짜 | ||
private Timestamp returnDate; // 반납 날짜 | ||
private Period period; // 대출 기간 | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
파라미터 타입과 리턴 타입에 List 를 쓰는게 놓을까요?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
대출이 이뤄질 때 회원과 도서가 1:N 이라고 생각해
Member
의 대출 로직에서 List를 리턴하게 했었습니다. 그 다음 대출 정보를 각각 하나씩 저장하는 것보다 List로 한 번에 저장하는 것이 성능면으로 더 좋다고 생각해서 파라미터로 List를 받게 했었습니다.단점
해결방법
1:N, 1:1 인 대출정보를 모두 받을 수 있는 메서드를 선언한다.
-> 회원이 대출받을 수 있는 도서의 수는 제한되어있기 때문에 List로 받아서 저장해도 성능면에서 별 차이가 없을 것 같아 좋은 방법은 아닌 것 같습니다.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
오호 그렇군요 혹시 List 대신 Collection 이나 Iterable 을 쓰는 건 어때요?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
앗 그 생각은 못 해봤네요... List 대신 Collection을 사용함으로써 결합도를 낮출 수 있어서 더 좋은 선택인 것 같습니다.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
파라미터, 리턴 타입 모두 같은 생각 이신가요?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
넵. 파라미터는 Collection 타입으로 받고, 리턴타입도 Collection 타입으로 리턴해서 호출한 클라이언트 쪽에서 원하는 Collection의 하위 타입으로 변환할 수 있게 하는 것이 좋을 것 같습니다.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
리턴 타입을 Collection 으로 하면 받는 곳에서 원하는 하위 타입으로 쓸 수 있을까요? 한 번 해보면 재밌을 것 같아요
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
호출한 쪽에서 Collection으로 받고 Stream을 이용해서 List나 Set 또는 Array로 변환해서 사용하면 조금 번거롭더라도 특정 구현체에 대해서 종속되지 않으니 괜찮다고 생각했습니다..!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
in out 에 대해 오늘 시간에 다뤄볼 수 있겠네요! ㅋㅋ