관리 메뉴

CASSIE'S BLOG

[슈퍼코딩]95-1강 스프링부트 Service Layer 살펴보기 본문

PROGRAMMING/슈퍼코딩 강의 정리

[슈퍼코딩]95-1강 스프링부트 Service Layer 살펴보기

ITSCASSIE1107 2024. 1. 26. 00:12

Controller가 웹에서 어떻게 들어오는지 어떻게 반환하는지만 신경쓰고 싶어서 비즈니스 로직을 옮기는 행위를 하는거임. 
 
트랜잭션: 데이터 처리 원자성을 보장하기 위한 여러 작업 -> 하나의 작업으로 묶는 것

store_sales sql문 실행

JdbcConfig 설정 바꿔야함
 

왼쪽보면 dto를 entity로 바꾸고 entity를 dto로 바꾸는 어느 정도 비즈니스 로직이 있었음.




 
before
 

package com.github.supercoding.service;

import com.github.supercoding.repository.ElectonicStoreItemRepository;
import com.github.supercoding.repository.ItemEntity;
import com.github.supercoding.web.dto.Item;
import com.github.supercoding.web.dto.ItemBody;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;

@Service
public class ElectronicStoreItemService {

private ElectonicStoreItemRepository electonicStoreItemRepository;



public ElectronicStoreItemService(ElectonicStoreItemRepository electonicStoreItemRepository) {
this.electonicStoreItemRepository = electonicStoreItemRepository;
}

public List<Item> findAllItem() {
List<ItemEntity> itemEntities = electonicStoreItemRepository.findAllItems();
return itemEntities.stream().map(Item::new).collect(Collectors.toList());
}


public Integer saveItem(ItemBody itemBody) {

ItemEntity itemEntity = new ItemEntity(null, itemBody.getName(), itemBody.getType(),
itemBody.getPrice(), itemBody.getSpec().getCpu(), itemBody.getSpec().getCapacity());
//이 부분 추가
return electonicStoreItemRepository.saveItem(itemEntity);
}

public Item findItemById(String id) {
Integer idInt = Integer.parseInt(id);
ItemEntity itemEntity = electonicStoreItemRepository.findItemById(idInt);
Item item = new Item(itemEntity);
return item;
}

public List<Item> findItemsByIds(List<String> ids) {

List<ItemEntity> itemEntities = electonicStoreItemRepository.findAllItems();

List<Item> itemsfounded = itemEntities.stream()
.map(Item::new)
.filter((item -> ids.contains(item.getId()))).collect(Collectors.toList());

return itemsfounded;
}

public void deleteItem(String id) {

Integer idInt = Integer.parseInt(id);
electonicStoreItemRepository.deleteItem(idInt);
}

public Item updateItem(String id, ItemBody itemBody) {
Integer idInt = Integer.valueOf(id);


ItemEntity itemEntity = new ItemEntity(idInt, itemBody.getName(), itemBody.getType(), itemBody.getPrice(),
itemBody.getSpec().getCpu(), itemBody.getSpec().getCapacity());

ItemEntity itemEntityUpdated = electonicStoreItemRepository.updateItemEntity(Integer.valueOf(id), itemEntity);

Item itemUpdated = new Item(itemEntityUpdated);

return itemUpdated;
}
}

 
after 
ElectronicStoreItemServie 추가 +ElectronicStoreItemService 삭제 + private ElectonicStoreItemRepository electonicStoreItemRepository; 이것도 없앰
 

package com.github.supercoding.service;

import com.github.supercoding.repository.ElectonicStoreItemRepository;
import com.github.supercoding.repository.ItemEntity;
import com.github.supercoding.web.dto.Item;
import com.github.supercoding.web.dto.ItemBody;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.stream.Collectors;

@Service
public class ElectronicStoreItemService {

private ElectonicStoreItemRepository electonicStoreItemRepository; //이 부분도 없앨 예정
private ElectronicStoreItemService electonicStoreItemService;

//밑에 부분 아예 없앤다고 함.ElectronicStoreItemService

public ElectronicStoreItemService(ElectonicStoreItemRepository electonicStoreItemRepository) {
this.electonicStoreItemRepository = electonicStoreItemRepository;
}

public List<Item> findAllItem() {
List<ItemEntity> itemEntities = electonicStoreItemRepository.findAllItems();
return itemEntities.stream().map(Item::new).collect(Collectors.toList());
}


public Integer saveItem(ItemBody itemBody) {

ItemEntity itemEntity = new ItemEntity(null, itemBody.getName(), itemBody.getType(),
itemBody.getPrice(), itemBody.getSpec().getCpu(), itemBody.getSpec().getCapacity());
//이 부분 추가
return electonicStoreItemRepository.saveItem(itemEntity);
}

public Item findItemById(String id) {
Integer idInt = Integer.parseInt(id);
ItemEntity itemEntity = electonicStoreItemRepository.findItemById(idInt);
Item item = new Item(itemEntity);
return item;
}

public List<Item> findItemsByIds(List<String> ids) {

List<ItemEntity> itemEntities = electonicStoreItemRepository.findAllItems();

List<Item> itemsfounded = itemEntities.stream()
.map(Item::new)
.filter((item -> ids.contains(item.getId()))).collect(Collectors.toList());

return itemsfounded;
}

public void deleteItem(String id) {

Integer idInt = Integer.parseInt(id);
electonicStoreItemRepository.deleteItem(idInt);
}

public Item updateItem(String id, ItemBody itemBody) {
Integer idInt = Integer.valueOf(id);


ItemEntity itemEntity = new ItemEntity(idInt, itemBody.getName(), itemBody.getType(), itemBody.getPrice(),
itemBody.getSpec().getCpu(), itemBody.getSpec().getCapacity());

ItemEntity itemEntityUpdated = electonicStoreItemRepository.updateItemEntity(Integer.valueOf(id), itemEntity);

Item itemUpdated = new Item(itemEntityUpdated);

return itemUpdated;
}
}

 
ElectronicStoreItemServie 생성자 추가 그러면 밑에 빨간글자로 바뀌는 거 다 바꿔줘야함
 

package com.github.supercoding.service;

import com.github.supercoding.repository.ElectonicStoreItemRepository;
import com.github.supercoding.repository.ItemEntity;
import com.github.supercoding.web.dto.Item;
import com.github.supercoding.web.dto.ItemBody;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.stream.Collectors;

@Service
public class ElectronicStoreItemService {


private ElectronicStoreItemService electonicStoreItemService;

public ElectronicStoreItemService(ElectronicStoreItemService electonicStoreItemService) {
this.electonicStoreItemService = electonicStoreItemService;
}

public List<Item> findAllItem() {
List<ItemEntity> itemEntities = electonicStoreItemRepository.findAllItems();
return itemEntities.stream().map(Item::new).collect(Collectors.toList());
}


public Integer saveItem(ItemBody itemBody) {

ItemEntity itemEntity = new ItemEntity(null, itemBody.getName(), itemBody.getType(),
itemBody.getPrice(), itemBody.getSpec().getCpu(), itemBody.getSpec().getCapacity());
//이 부분 추가
return electonicStoreItemRepository.saveItem(itemEntity);
}

public Item findItemById(String id) {
Integer idInt = Integer.parseInt(id);
ItemEntity itemEntity = electonicStoreItemRepository.findItemById(idInt);
Item item = new Item(itemEntity);
return item;
}

public List<Item> findItemsByIds(List<String> ids) {

List<ItemEntity> itemEntities = electonicStoreItemRepository.findAllItems();

List<Item> itemsfounded = itemEntities.stream()
.map(Item::new)
.filter((item -> ids.contains(item.getId()))).collect(Collectors.toList());

return itemsfounded;
}

public void deleteItem(String id) {

Integer idInt = Integer.parseInt(id);
electonicStoreItemRepository.deleteItem(idInt);
}

public Item updateItem(String id, ItemBody itemBody) {
Integer idInt = Integer.valueOf(id);


ItemEntity itemEntity = new ItemEntity(idInt, itemBody.getName(), itemBody.getType(), itemBody.getPrice(),
itemBody.getSpec().getCpu(), itemBody.getSpec().getCapacity());

ItemEntity itemEntityUpdated = electonicStoreItemRepository.updateItemEntity(Integer.valueOf(id), itemEntity);

Item itemUpdated = new Item(itemEntityUpdated);

return itemUpdated;
}
}

 

 

 

반응형