Skip to content

Commit 51a0a77

Browse files
committed
메서드의 파라미터 타입을 추상화 타입으로 변경
service에서 mapper 제거 및 repository에서 mapper를 이용한 객체 변환 수행
1 parent a1de177 commit 51a0a77

10 files changed

+78
-54
lines changed

src/main/java/com/study/bookcafe/dao/BookRepository.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@
22

33
import com.study.bookcafe.domain.Book;
44

5+
import java.util.Collection;
56
import java.util.List;
67

78
public interface BookRepository {
89
Book findById(long bookId);
9-
List<Book> findByIdList(List<Long> bookIdList);
10+
List<Book> findByIdList(Collection<Long> bookIds);
1011
}
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
package com.study.bookcafe.dao;
22

33
import com.study.bookcafe.domain.Borrow;
4+
5+
import java.util.Collection;
46
import java.util.List;
57

68
public interface BorrowRepository {
79

810
Borrow findById(long borrowId);
911
Borrow save(Borrow borrow);
10-
List<Borrow> save(List<Borrow> borrowList);
12+
List<Borrow> save(Collection<Borrow> borrows);
1113

1214
}

src/main/java/com/study/bookcafe/dao/TestBookRepository.java

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,31 +2,43 @@
22

33
import com.study.bookcafe.domain.Book;
44
import com.study.bookcafe.domain.Inventory;
5+
import com.study.bookcafe.entity.BookEntity;
6+
import com.study.bookcafe.mapper.BookMapper;
57
import org.springframework.stereotype.Repository;
68

79
import java.sql.Date;
810
import java.time.LocalDate;
11+
import java.util.Collection;
912
import java.util.HashMap;
1013
import java.util.List;
1114
import java.util.Map;
1215

1316
@Repository
1417
public class TestBookRepository implements BookRepository {
15-
public static Map<Long, Book> books = new HashMap<>(){{
16-
put(1L, Book.builder().id(1L).ISBN(9788936433598L).title("채식주의자").author("한강").publisher("창비").publishDate(Date.valueOf(LocalDate.of(2007, 10, 30)))
18+
19+
private final BookMapper bookMapper;
20+
21+
public TestBookRepository(BookMapper bookMapper) {
22+
this.bookMapper = bookMapper;
23+
}
24+
25+
public static Map<Long, BookEntity> books = new HashMap<>(){{
26+
put(1L, BookEntity.builder().id(1L).ISBN(9788936433598L).title("채식주의자").author("한강").publisher("창비").publishDate(Date.valueOf(LocalDate.of(2007, 10, 30)))
1727
.price(35000).inventory(new Inventory(5)).build());
18-
put(2L, Book.builder().id(2L).ISBN(9788954651134L).title("흰").author("한강").publisher("문학동네").publishDate(Date.valueOf(LocalDate.of(2018, 4, 25)))
28+
put(2L, BookEntity.builder().id(2L).ISBN(9788954651134L).title("흰").author("한강").publisher("문학동네").publishDate(Date.valueOf(LocalDate.of(2018, 4, 25)))
1929
.price(13000).inventory(new Inventory(0)).build());
2030
}};
2131

2232
public Book findById(long bookId) {
23-
return books.get(bookId);
33+
BookEntity bookEntity = books.get(bookId);
34+
return bookMapper.toBook(bookEntity);
2435
}
2536

2637
@Override
27-
public List<Book> findByIdList(List<Long> bookIdList) {
28-
return bookIdList
29-
.stream().filter(id -> books.containsKey(id))
38+
public List<Book> findByIdList(Collection<Long> bookIds) {
39+
List<BookEntity> bookEntities = bookIds.stream()
40+
.filter(id -> books.containsKey(id))
3041
.map(id -> books.get(id)).toList();
42+
return bookMapper.toBookList(bookEntities);
3143
}
3244
}
Lines changed: 28 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,51 @@
11
package com.study.bookcafe.dao;
22

3-
import com.study.bookcafe.domain.Book;
43
import com.study.bookcafe.domain.Borrow;
5-
import com.study.bookcafe.domain.Member;
4+
import com.study.bookcafe.entity.BookEntity;
5+
import com.study.bookcafe.entity.BorrowEntity;
6+
import com.study.bookcafe.entity.MemberEntity;
7+
import com.study.bookcafe.mapper.BorrowMapper;
68
import org.springframework.stereotype.Repository;
79

10+
import java.util.Collection;
811
import java.util.HashMap;
912
import java.util.List;
1013
import java.util.Map;
1114

1215
@Repository
1316
public class TestBorrowRepository implements BorrowRepository {
14-
Map<Long, Borrow> borrows = new HashMap<>(){{
15-
put(1L, Borrow.builder()
16-
.member(Member.builder().id(1).build())
17-
.book(Book.builder().id(1).ISBN(9788936433598L).build()).build());
18-
put(2L, Borrow.builder()
19-
.member(Member.builder().id(1).build())
20-
.book(Book.builder().id(2).ISBN(9788936433598L).build()).build());
17+
18+
private final BorrowMapper borrowMapper;
19+
20+
public TestBorrowRepository(BorrowMapper borrowMapper) {
21+
this.borrowMapper = borrowMapper;
22+
}
23+
24+
Map<Long, BorrowEntity> borrows = new HashMap<>(){{
25+
put(1L, BorrowEntity.builder()
26+
.member(MemberEntity.builder().id(1).build())
27+
.book(BookEntity.builder().id(1).ISBN(9788936433598L).build()).build());
28+
put(2L, BorrowEntity.builder()
29+
.member(MemberEntity.builder().id(1).build())
30+
.book(BookEntity.builder().id(2).ISBN(9788936433598L).build()).build());
2131
put(3L, null);
2232
}};
2333

2434
public Borrow findById(long borrowId) {
25-
return borrows.get(borrowId);
35+
BorrowEntity borrowEntity = borrows.get(borrowId);
36+
return borrowMapper.toBorrow(borrowEntity);
2637
}
2738

2839
public Borrow save(Borrow borrow) {
29-
return borrow;
40+
BorrowEntity borrowEntity = borrows.get(borrow.getId());
41+
return borrowMapper.toBorrow(borrowEntity);
3042
}
3143

3244
@Override
33-
public List<Borrow> save(List<Borrow> borrowList) {
34-
return borrowList
35-
.stream().filter(borrow -> borrows.containsKey(borrow.getId()))
36-
.map(borrow -> borrows.get(borrow.getId())).toList();
45+
public List<Borrow> save(Collection<Borrow> borrows) {
46+
List<BorrowEntity> borrowEntities = borrows
47+
.stream().filter(borrow -> this.borrows.containsKey(borrow.getId()))
48+
.map(borrow -> this.borrows.get(borrow.getId())).toList();
49+
return borrowMapper.toBorrowList(borrowEntities);
3750
}
3851
}

src/main/java/com/study/bookcafe/service/BookService.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,13 @@
22

33
import com.study.bookcafe.domain.Book;
44

5+
import java.util.Collection;
56
import java.util.List;
67

78
public interface BookService {
89
// 도서 조회 (id)
910
Book findById(long bookId);
1011

1112
// 도서 목록 조회 (id list)
12-
List<Book> findByIdList(List<Long> bookIdList);
13+
List<Book> findByIdList(Collection<Long> bookIds);
1314
}

src/main/java/com/study/bookcafe/service/BookServiceImpl.java

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,18 @@
22

33
import com.study.bookcafe.dao.BookRepository;
44
import com.study.bookcafe.domain.Book;
5-
import com.study.bookcafe.mapper.BookMapper;
65
import org.springframework.stereotype.Service;
76

7+
import java.util.Collection;
88
import java.util.List;
99

1010
@Service
1111
public class BookServiceImpl implements BookService {
1212

1313
private final BookRepository bookRepository;
14-
private final BookMapper bookMapper;
1514

16-
public BookServiceImpl(BookRepository bookRepository, BookMapper bookMapper) {
15+
public BookServiceImpl(BookRepository bookRepository) {
1716
this.bookRepository = bookRepository;
18-
this.bookMapper = bookMapper;
1917
}
2018

2119
/**
@@ -32,11 +30,11 @@ public Book findById(long bookId) {
3230
/**
3331
* 도서를 ID 목록으로 조회한다.
3432
*
35-
* @param bookIdList 도서 ID 목록
33+
* @param bookIds 도서 ID 목록
3634
* @return 도서 목록
3735
*/
3836
@Override
39-
public List<Book> findByIdList(List<Long> bookIdList) {
40-
return bookRepository.findByIdList(bookIdList);
37+
public List<Book> findByIdList(Collection<Long> bookIds) {
38+
return bookRepository.findByIdList(bookIds);
4139
}
4240
}

src/main/java/com/study/bookcafe/service/BorrowService.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,13 @@
22

33
import com.study.bookcafe.domain.Borrow;
44

5+
import java.util.Collection;
56
import java.util.List;
67

78
public interface BorrowService {
89
// 대출 저장
910
Borrow save(Borrow borrow);
1011

1112
// 여러 대출 저장
12-
List<Borrow> save(List<Borrow> borrowList);
13-
}
13+
List<Borrow> save(Collection<Borrow> borrows);
14+
}

src/main/java/com/study/bookcafe/service/BorrowServiceImpl.java

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,17 @@
22

33
import com.study.bookcafe.dao.BorrowRepository;
44
import com.study.bookcafe.domain.Borrow;
5-
import com.study.bookcafe.entity.BorrowEntity;
6-
import com.study.bookcafe.mapper.BorrowMapper;
75
import org.springframework.stereotype.Service;
86

7+
import java.util.Collection;
98
import java.util.List;
109

1110
@Service
1211
public class BorrowServiceImpl implements BorrowService {
1312
private final BorrowRepository borrowRepository;
14-
private final BorrowMapper borrowMapper;
1513

16-
public BorrowServiceImpl(BorrowRepository borrowRepository, BorrowMapper borrowMapper) {
14+
public BorrowServiceImpl(BorrowRepository borrowRepository) {
1715
this.borrowRepository = borrowRepository;
18-
this.borrowMapper = borrowMapper;
1916
}
2017

2118
/**
@@ -31,12 +28,12 @@ public Borrow save(Borrow borrow) {
3128
/**
3229
* 새로운 여러 대출들을 저장한다.
3330
*
34-
* @param borrowList 대출 목록
31+
* @param borrows 대출 목록
3532
* @return 생성한 대출 정보 목록
3633
*/
3734
@Override
38-
public List<Borrow> save(List<Borrow> borrowList) {
39-
List<BorrowEntity> borrowEntityList = borrowMapper.toBorrowEntityList(borrowList);
40-
return borrowMapper.toBorrowList(borrowEntityList);
35+
public List<Borrow> save(Collection<Borrow> borrows) {
36+
return borrowRepository.save(borrows);
4137
}
38+
4239
}

src/main/java/com/study/bookcafe/service/MemberService.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.study.bookcafe.domain.Borrow;
44
import com.study.bookcafe.domain.Member;
55

6+
import java.util.Collection;
67
import java.util.List;
78

89
public interface MemberService {
@@ -11,5 +12,5 @@ public interface MemberService {
1112
Member findById(long memberId);
1213

1314
// 도서 대출
14-
List<Borrow> borrowBook(long memberId, List<Long> bookIdList);
15+
List<Borrow> borrowBook(long memberId, Collection<Long> bookIds);
1516
}

src/main/java/com/study/bookcafe/service/MemberServiceImpl.java

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
import com.study.bookcafe.domain.Book;
55
import com.study.bookcafe.domain.Borrow;
66
import com.study.bookcafe.domain.Member;
7-
import com.study.bookcafe.mapper.MemberMapper;
87
import org.springframework.stereotype.Service;
98

9+
import java.util.Collection;
1010
import java.util.List;
1111

1212
@Service
@@ -15,13 +15,11 @@ public class MemberServiceImpl implements MemberService {
1515
private final MemberRepository memberRepository;
1616
private final BorrowService borrowService;
1717
private final BookService bookService;
18-
private final MemberMapper memberMapper;
1918

20-
public MemberServiceImpl(MemberRepository memberRepository, BorrowService borrowService, BookService bookService, MemberMapper memberMapper) {
19+
public MemberServiceImpl(MemberRepository memberRepository, BorrowService borrowService, BookService bookService) {
2120
this.memberRepository = memberRepository;
2221
this.borrowService = borrowService;
2322
this.bookService = bookService;
24-
this.memberMapper = memberMapper;
2523
}
2624

2725
/**
@@ -39,17 +37,17 @@ public Member findById(long memberId) {
3937
* 회원이 도서를 대출한다.
4038
*
4139
* @param memberId 회원 ID
42-
* @param bookIdList 도서 ID 목록
40+
* @param bookIds 도서 ID 목록
4341
* @return 대출 정보
4442
*/
4543
@Override
46-
public List<Borrow> borrowBook(long memberId, List<Long> bookIdList) {
44+
public List<Borrow> borrowBook(long memberId, Collection<Long> bookIds) {
4745
Member member = findById(memberId);
48-
List<Book> bookList = bookService.findByIdList(bookIdList);
49-
List<Borrow> borrowList = member.borrowBook(bookList);
46+
List<Book> books = bookService.findByIdList(bookIds);
47+
List<Borrow> borrows = member.borrowBook(books);
5048

51-
if(borrowList.isEmpty()) return borrowList;
49+
if(borrows.isEmpty()) return borrows;
5250

53-
return borrowService.save(borrowList);
51+
return borrowService.save(borrows);
5452
}
5553
}

0 commit comments

Comments
 (0)