study/Spring
4_Spring(ResponseBody, Transactional)
스파이크12
2020. 2. 25. 10:17
@RequestParam의 required : 해당파라미터가 필수인지 여부를 지정
@ResponseBody란?
메소드에서 리턴되는 값을 View를 통해 출력하는 것이 아닌
리턴값을 HTTP Response Body에 담는 역할
--> jsp로 화면이 이동되는 것이 아닌 기존 페이지로 데이터만 전달됨
@Transactional
Spirng Framework는 트랜잭션을 처리할 방법을 지원해줌(코드기반, 선언적)
선언적 트랜잭션 처리 방법
1) <tx:advice> -> AOP + tx를 이용한 XML 작성 방식
2) @Transactional 어노테이션을 이용한 방식
(클래스, 인터페이스, 메소드에 작성 가능)
* @ Transactional 사용 조건
- 인터페이스를 구현한 클래스로 선언된 bean은
메소드에 한해서 트랜잭션 처리가 적용됨
- 트랜잭션 처리를 위한 Transaction Manager가 bean으로 등록되어있어야함
-> root-context.xml에서 등록
<!-- 트랜잭션 처리를 위한 Transaction Manager 추가 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
@Transactional은 기본적으로 RuntimeException이 발생했을때만 rollback 처리를 함
하지만 DB 관련 Exception(ex. SqlException)은 대부분 CheckException 이므로
rollbackFor를 통해 롤백이 발생되는 예외를 지정
rollbackFor = Exception.class
-> 예외 발생시 rollback해라
@Transactional(rollbackFor = Exception.class)