개인 프로젝트/블로그

카테고리 이름 리스트 적용기(벡엔드)

공주맛밤 2022. 7. 9. 11:28

<추가한 카테고리 모델>

public class CategoryNameList {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private Long largeCategory_id;

    private String categoryName;

    @Enumerated(EnumType.STRING)
    private CategoryType categoryType;

}
public enum CategoryType {
    LARGE, SMALL
}

<repository>

public interface CategoryNameRepository extends JpaRepository<CategoryNameList, Integer> {
}

<service>

@Transactional
public LargeCategory largeCategorySave (LargeCategory largeCategory) {
    LargeCategory largeCategoryEntity= largeCategoryRepository.save(largeCategory);

    CategoryNameList categoryNameList = CategoryNameList.builder() //largecategory를 저장하면서 categoryNameList에 값을 저장함
            .largeCategory_id(largeCategoryEntity.getId())
            .categoryName(largeCategoryEntity.getLargeCategoryName())
            .categoryType(CategoryType.LARGE)
            .build();

    categoryNameRepository.save(categoryNameList);

    return largeCategoryEntity;
}

@Transactional //subCategory 저장
    public SubCategory subCategorySave (SubCategorySaveRequestDto subCategorySaveRequestDto) {
        LargeCategory largeCategory = largeCategoryRepository.findById(subCategorySaveRequestDto.getLargeCategory_id())
                .orElseThrow(()-> new IllegalArgumentException("없는 대분류 카테고리 입니다."));

        CategoryNameList categoryNameList = CategoryNameList.builder() //subCategory를 저장하면서 categoryNameList에 값을 저장함
                .largeCategory_id(largeCategory.getId()) //해당 largecategory_id가 들어가야함
                .categoryName(subCategorySaveRequestDto.getSubCategoryName())
                .categoryType(CategoryType.SMALL)
                .build();

        categoryNameRepository.save(categoryNameList);

        SubCategory subCategory = SubCategory.builder()
                .largeCategory(largeCategory)
                .subCategoryName(subCategorySaveRequestDto.getSubCategoryName())
                .build();

        return subCategoryRepository.save(subCategory);
    }
    
    @Transactional //categoryNameList 가져오기
    public List<CategoryNameList> categoryNameList() {
        return categoryNameRepository.findAll();
    }

<controller>

@GetMapping("/categoryNameList")
public ResponseDto<?> categoryNameList () {
    return new ResponseDto<> (HttpStatus.OK.value(), categoryService.categoryNameList());
}

db확인

728x90
반응형

'개인 프로젝트 > 블로그' 카테고리의 다른 글

로그인 구현 생각  (0) 2022.07.10
카테고리 달기 (react)  (1) 2022.07.10
게시글 category 적용 고민  (0) 2022.07.08
카타고리 달기 (front)  (0) 2022.07.08
블로그 카테고리 달기 (백엔드)  (1) 2022.07.04