1 / 46

Managing transactions

Managing transactions. 백기선 whiteship2000@gmail.com http://whiteship.tistory.com. 차례. 트랜잭션이란 ? 트랜잭션 관리자 선택하기 자바 코딩을 통한 트랜잭션 처리 선언적인 트랜잭션 처리 XML 을 사용하는 방법 애노테이션을 사용하는 방법 마무리. 트랜잭션이란 ?. 트랜잭션. 잘 되면 , 반영하기. 여러 작업을 한 덩어리로. 잘 안 되면 , 돌아가기. 트랜잭션의 특징. Atomic: 원자성 Consistent: 일관성

ferrol
Download Presentation

Managing transactions

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. www.springframework.co.kr Managing transactions 백기선 whiteship2000@gmail.com http://whiteship.tistory.com

  2. www.springframework.co.kr 차례 • 트랜잭션이란? • 트랜잭션 관리자 선택하기 • 자바 코딩을 통한 트랜잭션 처리 • 선언적인 트랜잭션 처리 • XML을 사용하는 방법 • 애노테이션을 사용하는 방법 • 마무리

  3. www.springframework.co.kr 트랜잭션이란?

  4. www.springframework.co.kr 트랜잭션 잘 되면, 반영하기. 여러 작업을 한 덩어리로.. 잘 안 되면, 돌아가기.

  5. www.springframework.co.kr 트랜잭션의 특징 • Atomic: 원자성 • Consistent: 일관성 • Isolated: 독립성 • Durable: 영속성

  6. www.springframework.co.kr Atomic: 원자성 • 트랜잭션으로 묶여있는 모든 작업을 처리 하거나, 모두 처리 하지 않습니다.

  7. www.springframework.co.kr Consistent: 일관성 • 트랜잭션이 종료되더라도,(Commit 이든 Roll back 이든 관계 없이) 시스템은 정상적으로 가동되는 상태여야 합니다.

  8. www.springframework.co.kr Isolated: 독립성 • 여러 명의 사용자가 서로에게 피해를 주지 않고 같은 데이터에 접근할 수 있어야 합니다.

  9. www.springframework.co.kr Durable: 영속성 • 트랜잭션이 완료되면, 그 결과는 시스템이 충돌하더라도 영구 보존되어야 한다.

  10. www.springframework.co.kr 스프링의 트랜잭션 처리 지원 철학 • EJB와 마찬가지로 코딩과 선언적인 방법 두 가지를 모두 제공합니다. • 하지만, EJB에 비해서 스프링은 • 스프링은 JTA 이 외에 여러 트랜잭션 관리자를 사용할 수 있도록 허용합니다. • 선언적인 처리에서 트랜잭션의 속성을 설정할 수 있습니다.

  11. www.springframework.co.kr 코딩 VS 선언 • 코딩 • 좀 더 세밀하게 트랜잭션 경계를 설정할 수 있습니다. • 서비스 계층에 추가적인 코딩이 발생합니다. • 선언 • 소스코드를 전혀 건드리지 않고 트랜잭션 처리를 할 수 있습니다. • 메소드 단위로 트랜잭션 처리를 합니다.

  12. www.springframework.co.kr 트랜잭션 관리자 선택하기

  13. www.springframework.co.kr 스프링에서 사용할 수 있는트랜잭션 관리자

  14. www.springframework.co.kr 주요 트랜잭션 관리자 • JDBC 트랜잭션 관리자 • Hibernate 트랜잭션 관리자 • JPA Java Persistent API트랜잭션 관리자 • JDO Java Data Objects트랜잭션 관리자 • JTA Java Transaction API트랜잭션 관리자

  15. www.springframework.co.kr 주요 트랜잭션 관리자

  16. www.springframework.co.kr JDBC 트랜잭션 관리자 <bean id="transactionManager" class="org.springframework.jdbc. datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> </bean>

  17. www.springframework.co.kr Hibernate 트랜잭션 관리자 Hibernate 버전 2 이하.. <bean id="transactionManager" class="org.springframework. orm.hibernate.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"/> </bean> Hibernate 버전 3 이상.. <bean id="transactionManager" class="org.springframework. orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"/> </bean>

  18. www.springframework.co.kr JPA 트랜잭션 관리자 <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> <property name="entityManagerFactory" ref="entityManagerFactory" /> </bean>

  19. www.springframework.co.kr JDO 트랜잭션 관리자 <bean id="transactionManager" class="org.springframework.orm.jdo.JdoTransactionManager"> <property name="persistenceManagerFactory" ref="persistenceManagerFactory"/> </bean>

  20. www.springframework.co.kr JTA 트랜잭션 관리자 <bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager"> <property name="transactionManagerName" value="java:/TransactionManager" /> </bean>

  21. www.springframework.co.kr 자바 코딩을 통한 트랜잭션 처리

  22. www.springframework.co.kr 세상에는 두 분류의 사람들이 있습니다. • The Control Freaks • 모든 것을 손수 제어하기를 좋아하는 사람들. • 거저 얻는 것을 싫어하는 사람들. • 자신의 코드에서 무슨 일이 벌어지는지 즉석에서 확인하고 싶어하는 사람들.

  23. www.springframework.co.kr 코드 보기 • TransactionTemplate 사용하기. • TransactionManager를 직접 사용하지 않는 이유. • 특정 TransactionManager에 종송적인 코드 생성방지. • 템플릿 클래스 사용을 좀 더 편하게 해줌. • chapter6/dao/MemberDao.Java

  24. www.springframework.co.kr 오늘도 퀴즈 • 스프링이 트랜잭션 관리를 할 때 제공하는 장점은?(두 개) • 자바 코딩을 사용한 트랜잭션 관리의 장점은? • 다음에 살펴볼 것은? • 잠깐 쉬고 갈까요?

  25. www.springframework.co.kr 선언적인 트랜잭션 처리

  26. www.springframework.co.kr 세상에는 두 분류의 사람들이 있습니다. • The Not Control Freaks • 모든 것을 손수 제어하기를 귀찮은 사람들. • 거저 얻는 것을 좋아하는 사람들. • 자신의 코드에서 무슨 일이 벌어지는지 즉석에서 확인하지 않아도 되는 사람들.

  27. www.springframework.co.kr 선언적인 트랜잭션 관리 • 스프링이 나타나기 전까지 EJB만이 선언적인 트랜잭션 관리를 할 수 있었습니다. • 그러나.. 스프링이 나타났죠. • 더군다나 더 멋지게 말이죠. • 트랜잭션의 속성을 설정할 수 있습니다. • 스프링 AOP를 사용합니다.

  28. www.springframework.co.kr 트랜잭션 속성 얼마나 개인적인 트랜잭션인지 설정. 트랜잭션 경계 설정. 롤백 해야 할 Catched Exception 설정.

  29. www.springframework.co.kr Propagation Behaviors • 트랜잭션 처리를 해야 하는 메소드의 트랜잭션 경계boundary를 설정합니다. • 새로운 트랜잭션을 시작해야 하는지, 끊어야 하는지등을 설정합니다. • 총 7가지 중 하나를 선택할 수 있습니다. • http://whiteship.tistory.com/703 • CMT에서 지원하지 않는 Nested 트랜잭션 관련 설정을 할 수 있습니다.

  30. www.springframework.co.kr Isolation levels • 공통의 데이터에 동시적인 접근이 발생할 때 해당 트랜잭션의 독립성 정도를 조정합니다. • Concurrency Problems • Dirty read • Nonrepeatable read • Phantom reads • 총 5가지 레벨을 설정할 수 있습니다. • http://whiteship.tistory.com/704 • 레벨이 높아질 수록 성능은 저하 됩니다.

  31. www.springframework.co.kr Transaction timeout • 트랜잭션으로 묶여 있는 작업들이 순조롭게 진행된다면, 그리 오래 걸리지 않을 것입니다. • 따라서, 비정상적으로 길어지는 경우 문제가 발생한 것으로 생각하고 롤백 시킬 수 있습니다. • 새로운 트랜잭션 경계를 가지고 작업하는 메소드에 해당합니다. • PROPAGATION_REQUIRED • PROPAGATION_REQUIRES_NEW • PROPAGATION_NESTED

  32. www.springframework.co.kr Rollback rules • 기본적으로 Runtime Exception이 발생할 경우에만 롤백이 됩니다. • 원하는 Exception이 발생할 때 롤백이 되도록 설정할 수 있습니다.

  33. www.springframework.co.kr 트랜잭션을 설정하는 방법 • XML을 사용하는 방법 • ProxyFactoryBean을 이용하는 방법 • tx 네임스페이스를 사용하는 방법 • 애노테이션을 사용하는 방법 • 둘 다 결국은 내부적으로 Spring AOP를 사용합니다.

  34. www.springframework.co.kr 스프링의 트랜잭션 처리 원리

  35. www.springframework.co.kr XML을 사용하는 방법ProxyFactoryBean을 사용하는 방법 • org.springframework.transaction.interceptor.TransactionProxyFactoryBean • target • proxyInterfaces • transactionManager • transactionAttributes

  36. www.springframework.co.kr 소스 코드 보기 • TransactionProxyFactoryBean을 사용한 트랜잭션 설정 • chapter6/springContext.xml

  37. www.springframework.co.kr XML을 사용하는 방법tx 네임스페이스를 사용하는 방법 • tx 네임스페이스 등록하기 • <tx:advice> • <tx:attributes> • <tx:method> • <aop:config> • <aop:advisor>

  38. www.springframework.co.kr 소스 코드 보기 • tx, aop 네임스페이스를 사용한 트랜잭션 설정 • chapter6/springContext.xml

  39. www.springframework.co.kr XML을 사용한 설정을 마치며… • 저걸 어떻게 다 외우나… • Eclipse가 있자나요.

  40. www.springframework.co.kr 번외Eclipse의 소중함 • 코드 템플릿 등록하기.

  41. www.springframework.co.kr 애노테이션으로 트랜잭션 설정하기 • 딱 한 줄만 XML에 추가해 주시면 됩니다. • <tx:annotation-driven /> • 또는 • <tx:annotation-driven transaction-manager="txManager" /> • @Transactional 하나만 외우시면 됩니다.

  42. www.springframework.co.kr 소스 코드 보기 • @Transactional 애노테이션을 사용하여 트랜잭션 설정하기. • chapter6/dao/MemberServiceImplWithTransactionAnnotaion.java

  43. www.springframework.co.kr 마무리

  44. www.springframework.co.kr 궁금한 것~저는 질문을 좋아합니다.

  45. www.springframework.co.kr 발표 후 소감 &시청 후 소감이젠 저도 이야기 하겠습니다.

  46. www.springframework.co.kr 감사합니다.이제 6번 남았습니다.다음 발표는 이대엽님의 Spring Security입니다.

More Related