Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Spring Boot
- 백준
- jpa
- db
- transaction
- 스프링 핵심 기능
- JDBC
- AOP
- 스프링
- JPQL
- 김영한
- Servlet
- QueryDSL
- Thymeleaf
- 인프런
- pointcut
- java
- spring
- kotlin
- 자바
- http
- SpringBoot
- Android
- springdatajpa
- 그리디
- 스프링 핵심 원리
- 알고리즘
- Exception
- Proxy
- Greedy
Archives
- Today
- Total
개발자되기 프로젝트
[WebPage] 상품 도메인 개발 본문
1. Item Class
@Data
public class Item {
private Long id;
private String itemName;
private Integer price;
private Integer quantity;
public Item() {
}
public Item(String itemName, Integer price, Integer quantity) {
this.itemName = itemName;
this.price = price;
this.quantity = quantity;
}
}
2. ItemRepository
- DB사용하지 않고 간단하게 메모리 활용..
@Repository
public class ItemRepository {
private static final Map<Long, Item> store = new HashMap<>();
private static long sequence = 0L;
public Item save(Item item){
item.setId(++sequence);
store.put(item.getId(), item);
return item;
}
public Item findById(Long id){
return store.get(id);
}
public List<Item> findAll(){
return new ArrayList<>(store.values());
}
public void update(Long itemId, Item updateParam){
Item findItem = findById(itemId);
findItem.setItemName(updateParam.getItemName());
findItem.setPrice(updateParam.getPrice());
findItem.setQuantity(updateParam.getQuantity());
}
public void clearStore(){
store.clear();
}
}
3. Test
import java.util.List;
import static org.assertj.core.api.Assertions.*;
import static org.junit.jupiter.api.Assertions.*;
class ItemRepositoryTest {
ItemRepository itemRepository = new ItemRepository();
@AfterEach
void afterEach(){
itemRepository.clearStore();
}
@Test
void save(){
//given
Item item = new Item("itemA", 10000, 10);
//when
Item savedItem = itemRepository.save(item);
//then
Item findItem = itemRepository.findById(item.getId());
assertThat(findItem).isEqualTo(savedItem);
}
@Test
void findAll(){
//given
Item item1 = new Item("item1", 10000, 10);
Item item2 = new Item("item2", 20000, 20);
itemRepository.save(item1);
itemRepository.save(item2);
//when
List<Item> result = itemRepository.findAll();
//then
assertThat(result.size()).isEqualTo(2);
assertThat(result).contains(item1, item2);
}
@Test
void updateItem(){
//given
Item item = new Item("item1", 10000, 10);
Item savedItem = itemRepository.save(item);
Long itemId = savedItem.getId();
//when
Item updateParam = new Item("item2", 20000, 20);
itemRepository.update(itemId, updateParam);
//then
Item findItem = itemRepository.findById(itemId);
assertThat(findItem.getItemName()).isEqualTo(updateParam.getItemName());
assertThat(findItem.getQuantity()).isEqualTo(updateParam.getQuantity());
}
}
5. GitHub : 210916 domain
'인프런 > [인프런] 스프링 MVC 1' 카테고리의 다른 글
[WebPage] Thymeleaf로 고치기 (0) | 2021.09.17 |
---|---|
[WebPage] 상품서비스 HTML (0) | 2021.09.17 |
[WebPage] 프로젝트 생성, 요구사항 분석 (0) | 2021.09.16 |
RequestMapping Handler Adapter 구조 (0) | 2021.09.16 |
HTTP 메시지 컨버터 (0) | 2021.09.15 |
Comments