root-context.xml 에 bean 추가
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<tx:annotation-driven/>
DB에 샘플 테이블 두개 생성
create table tbl_sample1(
col1 varchar2(500)
);
create table tbl_sample2(
col2 varchar2(50)
);
src/main/java 경로에 있는 mapper 패키지에 Sample1Mapper 인터페이스 추가 후 작성
public interface Sample1Mapper {
public int insertCol1(String data);
public int insertCol2(String data);
}
src/main/resources 경로에 있는 mappers 패키지에 Sample1Mapper.xml 생성 후 작성
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hanul.springstudent.mapper.Sample1Mapper">
<insert id="insertCol1">
INSERT INTO tbl_sample1(col1)
VALUES (#{data})
</insert>
<insert id="insertCol2">
INSERT INTO tbl_sample2(col2)
VALUES (#{data})
</insert>
</mapper>
src/main/java 경로에 있는 service패키지에 ISampleTxService 인터페이스 생성 후 추상메소드 작성
public interface ISampleTxService {
public void addData(String value);
}
service패키지 안에 있는 impl 패키지에 SampleTxServiceImpl 클래스 생성 후 작성
@Service
@Log4j
public class SampleTxServiceImpl implements ISampleTxService{
// 필드 주입 방식
// @Autowired
// private Sample1Mapper mapper;
// 생성자 주입 방식
private Sample1Mapper mapper;
@Autowired
public SampleTxServiceImpl(Sample1Mapper mapper) {
this.mapper = mapper;
}
@Override
public void addData(String value) {
log.info("insertCol1...................");
mapper.insertCol1(value);
log.info("insertCol2...................");
mapper.insertCol2(value);
}
}
src/test/java 경로에 JUnit Test Case 생성 후 테스트 케이스 작성
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("file:src/main/webapp/WEB-INF/spring/root-context.xml")
@Log4j
public class SampleTxServiceTests {
@Autowired
private ISampleTxService service;
@Test
public void test() {
String str = "Starry\r\n" +
"Starry night\r\n" +
"Paint your palette blue and grey\r\n" +
"Look out on a summer's day";
log.info(str.getBytes().length);
service.addData(str);
}
}
빈공간 우클릭하여 JUnit Test 실행
우측 JUnit탭에 빨간색으로 뜨고 콘솔이 아래와 같이 뜸
DB에 가서 확인하면 tbl_sample1 테이블에만 데이터가 등록되었음
테이블 둘다 삭제 후 다시 똑같이 만든 후 SampleTxServiceImpl 클래스의 addData 메소드 위에 @Transactional 어노테이션 추가
다시 SampleTxServiceTests 로 돌아가서 JUnit 테스트 실행 후 DB확인!
두테이블에 모두 데이터가 저장되지 않았다면 성공!
'Programming > Spring' 카테고리의 다른 글
[STS3] 파일 업로드(2) (0) | 2024.04.24 |
---|---|
[STS3] 댓글 기능(4) (0) | 2024.04.24 |
[STS3] 댓글 기능(3) (0) | 2024.04.23 |
[STS3] 댓글 기능(2) (0) | 2024.04.22 |
[STS3] 댓글 기능(1) (0) | 2024.04.22 |