スプリング18トランザクション
13245 ワード
設定
pom.xml
<!-- transaction -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${org.springframework-version}</version>
</dependency>
servlet-context.xml
<!-- trasaction -->
<beans:bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<beans:property name="dataSource" ref="dbcpSource"/>
</beans:bean>
->
-> <!-- trasaction tx -->
<!-- @Transactional 을 사용할 수 있게 함 -->
<tx:annotation-driven/>
<beans:bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<beans:property name="dataSource" ref="dbcpSource"/>
</beans:bean>
spring23prj
MyController
@Controller
@RequestMapping("my")
public class MyController {
@Autowired
private MyService service;
@GetMapping("test")
@ResponseBody
public String test() {
service.test();
return "test called~!";
}
}
MyService
@Service
@Transactional
//@Transactional(isolation = )
//@Transactional(rollbackFor = Exception.class)
//@Transactional(noRollbackFor = NullPointerException.class)
//@Transactional(readOnly=true)
//오직 select쿼리만 날리겠다?
public class MyService {
@Autowired
private MyDao dao;
public void test() {
try {
dao.testA();
dao.testB();
} catch (Exception e) {
throw new RuntimeException("내가 생각못한 checked 예외 발생");
}
}
}
MyDao
@Repository
public class MyDao {
@Autowired
private SqlSession session;
public void testA() {
session.insert("test.a");
}
public void testB() {
session.insert("test.b");
}
}
member-mapper.xml
<mapper namespace="test">
<insert id="a">
INSERT INTO TEST_TB
VALUES('AAA')
</insert>
<insert id="b">
INSERT INTO TEST_TB
VALUES('BBBbbbbbbbbbbbb')
</insert>
</mapper>
オプション
rollbackFor
<!-- transaction -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<!-- trasaction -->
<beans:bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<beans:property name="dataSource" ref="dbcpSource"/>
</beans:bean>
<!-- trasaction tx -->
<!-- @Transactional 을 사용할 수 있게 함 -->
<tx:annotation-driven/>
<beans:bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<beans:property name="dataSource" ref="dbcpSource"/>
</beans:bean>
MyController
@Controller
@RequestMapping("my")
public class MyController {
@Autowired
private MyService service;
@GetMapping("test")
@ResponseBody
public String test() {
service.test();
return "test called~!";
}
}
MyService
@Service
@Transactional
//@Transactional(isolation = )
//@Transactional(rollbackFor = Exception.class)
//@Transactional(noRollbackFor = NullPointerException.class)
//@Transactional(readOnly=true)
//오직 select쿼리만 날리겠다?
public class MyService {
@Autowired
private MyDao dao;
public void test() {
try {
dao.testA();
dao.testB();
} catch (Exception e) {
throw new RuntimeException("내가 생각못한 checked 예외 발생");
}
}
}
MyDao
@Repository
public class MyDao {
@Autowired
private SqlSession session;
public void testA() {
session.insert("test.a");
}
public void testB() {
session.insert("test.b");
}
}
member-mapper.xml
<mapper namespace="test">
<insert id="a">
INSERT INTO TEST_TB
VALUES('AAA')
</insert>
<insert id="b">
INSERT INTO TEST_TB
VALUES('BBBbbbbbbbbbbbb')
</insert>
</mapper>
オプション
rollbackFor
@Transactional(rollbackFor = Exception.class)
noRollbackFor
@Transactional(noRollbackFor = NullPointerException.class)
readOnly
@Transactional(readOnly=true)
isolation
@Transactional(isolation = )
Reference
この問題について(スプリング18トランザクション), 我々は、より多くの情報をここで見つけました https://velog.io/@lecharl/스프링18テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol