반응형
250x250
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
- 자바스크립트파라미터
- 인프런강좌
- sort
- 코딩
- 자바스크립트틱택토
- 자바스크립트함수
- 자바스크립트
- 콜백함수
- c#
- 자바스크립트recude
- 고차함수
- 인프런자바스크립트
- .NET
- 인터넷프로토콜
- 제로초
- 객체리터럴
- 인프런인강
- slice
- 비주얼스튜디오
- 자바스크립트객체리터럴
- 이벤트리스너
- 인프런무료강좌
- EntityFramework
- 인프런
- 인프런강의
- 객체의비교
- NPM
- Blazor
- 틱택토구현
- HTTP
Archives
- Today
- Total
샐님은 개발중
ItemController 에서 save 로직 리팩토링 본문
728x90
반응형
item 을 저장할때 기존로직은 아래 코드처럼 controller에서 item데이터를 생성해주고 있어서 유지보수나 관리차원에서 힘들 수 있다.
@PostMapping("/save")
public String saveItem(@ModelAttribute("item") Item form, RedirectAttributes
redirectAttributes, Model model) throws IOException {
List<UploadFile> storeImageFiles = fileutils.storeFiles(form.getImageFiles());
//데이터베이스에 저장
Item item = new Item();
// controller 에서 setter를 사용해서 추가하는 것보다는
// entity에 static 생성자 메소드를 생성해서 저장시키는 것이 좋음
item.setItemName(form.getItemName());
item.setDescription(form.getDescription());
item.setPrice(form.getPrice());
item.setUploadFiles(storeImageFiles);
List<Color> newcolor = new ArrayList<>();
List<Size> newSize = new ArrayList<>();
//색상
for(String o : form.getColors()){
Color co = new Color(item,o);
newcolor.add(co);
}
//사이즈
for(String s : form.getSizes()){
Size co = new Size(item,s);
newSize.add(co);
}
item.setColorList(newcolor);
item.setSizeList(newSize);
itemService.saveItem(item);
log.info("saved item");
// return "redirect:/admin/item/detail/"+savedItem.getId();
return "redirect:/admin/item/list";
}
그러므로 이부분에 setter부분을 최대한 없애고 저장하는 메서드는 entitiy에서 할수 있게 수정하는 것이 권장된다.
//데이터베이스에 저장
Item item = new Item();
// controller 에서 setter를 사용해서 추가하는 것보다는
// entity에 static 생성자 메소드를 생성해서 저장시키는 것이 좋음
item.setItemName(form.getItemName());
item.setDescription(form.getDescription());
item.setPrice(form.getPrice());
item.setUploadFiles(storeImageFiles);
List<Color> newcolor = new ArrayList<>();
List<Size> newSize = new ArrayList<>();
//색상
for(String o : form.getColors()){
Color co = new Color(item,o);
newcolor.add(co);
}
//사이즈
for(String s : form.getSizes()){
Size co = new Size(item,s);
newSize.add(co);
}
item.setColorList(newcolor);
item.setSizeList(newSize);
itemService.saveItem(item);
Item.java 에서 createItem 메소드를 따로 생성해서 분리해준다.
,,,
@Entity
@Getter
@Setter
public class Item {
,,,
// 생성 메서드 //
public static Item createItem(Item item,List<UploadFile> files){
Item newItem;
newItem = item;
newItem.setUploadFiles(files);
List<Color> newColor = new ArrayList<>();
List<Size> newSize = new ArrayList<>();
//색상
for(String o : item.getColors()){
Color co = new Color(item,o);
newColor.add(co);
}
//사이즈
for(String s : item.getSizes()){
Size co = new Size(item,s);
newSize.add(co);
}
newItem.setColorList(newColor);
newItem.setSizeList(newSize);
//파일
newItem.setUploadFiles(files);
return newItem;
}
}
728x90
반응형
'스프링 DB 1편 - 데이터 접근 핵심 원리' 카테고리의 다른 글
JPA - Map 데이터를 List로 변환 해서 데이터 저장 (0) | 2023.07.24 |
---|---|
트랜잭션 문제 해결 - 트랜잭션 템플릿 (0) | 2023.07.21 |
스프링과 문제 해결 - 트랜잭션 - 트랜잭션 매니저 (0) | 2023.07.21 |
트랜잭션 이해 (0) | 2023.07.20 |
커넥션 풀과 데이터 소스 이해 (0) | 2023.07.20 |