✅ @Transactional
어노테이션을 통해 트랜잭션 처리
rollback
처리 됨package com.joo.usedmarket.product.service;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.joo.usedmarket.category.dto.CategoryDto;
import com.joo.usedmarket.product.dao.ProductDao;
import com.joo.usedmarket.product.dto.ProductDto;
import com.joo.usedmarket.product.dto.ProductFileDto;
@Service
public class ProductServiceImpl implements ProductService {
private SqlSession session;
private ProductDao dao;
public ProductServiceImpl(SqlSession session,ProductDao dao) {
this.session = session;
this.dao = dao;
}
@Transactional
public int productRegist(ProductDto p) {
int cnt = 0;
int result = insertProduct(p); // 제품 추가 서비스
if(result == 1) {
System.out.println("상품은 문제없다");
cnt++;
}
for(int i=0; i<p.getFiles().size(); i++) {
if(i==0) {
p.getFiles().get(i).setMainImageYn('Y');
}else {
p.getFiles().get(i).setMainImageYn('N');
}
cnt++;
insertProductFile(p.getFiles().get(i));
}
/* for(ProductFileDto file : p.getFiles()) {
insertProductFile(file); // 제품에 대한 다수의 이미지 추가 서비스 (1:N)
}*/
return cnt;
}
@Override
public int insertProduct(ProductDto p) {
return dao.insertProduct(session,p);
}
@Override
public int insertProductFile(ProductFileDto file) {
return dao.insertProductFile(session,file);
}
}
int result = service.productRegist(p); // 트랜잭션으로 제품 및 다수의 제품 이미지 테이블 추가