managing transactions n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Managing transactions PowerPoint Presentation
Download Presentation
Managing transactions

Loading in 2 Seconds...

play fullscreen
1 / 46

Managing transactions - PowerPoint PPT Presentation


  • 123 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Managing transactions' - ferrol


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
managing transactions
www.springframework.co.kr

Managing transactions

백기선

whiteship2000@gmail.com

http://whiteship.tistory.com

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

잘 되면,

반영하기.

여러 작업을

한 덩어리로..

잘 안 되면,

돌아가기.

slide5
www.springframework.co.kr트랜잭션의 특징
  • Atomic: 원자성
  • Consistent: 일관성
  • Isolated: 독립성
  • Durable: 영속성
atomic
www.springframework.co.krAtomic: 원자성
  • 트랜잭션으로 묶여있는 모든 작업을 처리 하거나, 모두 처리 하지 않습니다.
consistent
www.springframework.co.krConsistent: 일관성
  • 트랜잭션이 종료되더라도,(Commit 이든 Roll back 이든 관계 없이) 시스템은 정상적으로 가동되는 상태여야 합니다.
isolated
www.springframework.co.krIsolated: 독립성
  • 여러 명의 사용자가 서로에게 피해를 주지 않고 같은 데이터에 접근할 수 있어야 합니다.
durable
www.springframework.co.krDurable: 영속성
  • 트랜잭션이 완료되면, 그 결과는 시스템이 충돌하더라도 영구 보존되어야 한다.
slide10
www.springframework.co.kr스프링의 트랜잭션 처리 지원 철학
  • EJB와 마찬가지로 코딩과 선언적인 방법 두 가지를 모두 제공합니다.
  • 하지만, EJB에 비해서 스프링은
    • 스프링은 JTA 이 외에 여러 트랜잭션 관리자를 사용할 수 있도록 허용합니다.
    • 선언적인 처리에서 트랜잭션의 속성을 설정할 수 있습니다.
slide11
www.springframework.co.kr코딩 VS 선언
  • 코딩
    • 좀 더 세밀하게 트랜잭션 경계를 설정할 수 있습니다.
    • 서비스 계층에 추가적인 코딩이 발생합니다.
  • 선언
    • 소스코드를 전혀 건드리지 않고 트랜잭션 처리를 할 수 있습니다.
    • 메소드 단위로 트랜잭션 처리를 합니다.
slide14
www.springframework.co.kr주요 트랜잭션 관리자
  • JDBC 트랜잭션 관리자
  • Hibernate 트랜잭션 관리자
  • JPA Java Persistent API트랜잭션 관리자
  • JDO Java Data Objects트랜잭션 관리자
  • JTA Java Transaction API트랜잭션 관리자
slide16
www.springframework.co.krJDBC 트랜잭션 관리자

<bean id="transactionManager" class="org.springframework.jdbc. datasource.DataSourceTransactionManager">

<property name="dataSource" ref="dataSource"/>

</bean>

hibernate
www.springframework.co.krHibernate 트랜잭션 관리자

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>

slide18
www.springframework.co.krJPA 트랜잭션 관리자

<bean id="transactionManager"

class="org.springframework.orm.jpa.JpaTransactionManager">

<property name="entityManagerFactory"

ref="entityManagerFactory" />

</bean>

slide19
www.springframework.co.krJDO 트랜잭션 관리자

<bean id="transactionManager"

class="org.springframework.orm.jdo.JdoTransactionManager">

<property name="persistenceManagerFactory"

ref="persistenceManagerFactory"/>

</bean>

slide20
www.springframework.co.krJTA 트랜잭션 관리자

<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">

<property name="transactionManagerName"

value="java:/TransactionManager" />

</bean>

slide22
www.springframework.co.kr세상에는 두 분류의 사람들이 있습니다.
  • The Control Freaks
    • 모든 것을 손수 제어하기를 좋아하는 사람들.
    • 거저 얻는 것을 싫어하는 사람들.
    • 자신의 코드에서 무슨 일이 벌어지는지 즉석에서 확인하고 싶어하는 사람들.
slide23
www.springframework.co.kr코드 보기
  • TransactionTemplate 사용하기.
  • TransactionManager를 직접 사용하지 않는 이유.
    • 특정 TransactionManager에 종송적인 코드 생성방지.
    • 템플릿 클래스 사용을 좀 더 편하게 해줌.
  • chapter6/dao/MemberDao.Java
slide24
www.springframework.co.kr오늘도 퀴즈
  • 스프링이 트랜잭션 관리를 할 때 제공하는 장점은?(두 개)
  • 자바 코딩을 사용한 트랜잭션 관리의 장점은?
  • 다음에 살펴볼 것은?
  • 잠깐 쉬고 갈까요?
slide26
www.springframework.co.kr세상에는 두 분류의 사람들이 있습니다.
  • The Not Control Freaks
    • 모든 것을 손수 제어하기를 귀찮은 사람들.
    • 거저 얻는 것을 좋아하는 사람들.
    • 자신의 코드에서 무슨 일이 벌어지는지 즉석에서 확인하지 않아도 되는 사람들.
slide27
www.springframework.co.kr선언적인 트랜잭션 관리
  • 스프링이 나타나기 전까지 EJB만이 선언적인 트랜잭션 관리를 할 수 있었습니다.
  • 그러나.. 스프링이 나타났죠.
  • 더군다나 더 멋지게 말이죠.
    • 트랜잭션의 속성을 설정할 수 있습니다.
    • 스프링 AOP를 사용합니다.
slide28
www.springframework.co.kr트랜잭션 속성

얼마나 개인적인 트랜잭션인지 설정.

트랜잭션 경계 설정.

롤백 해야 할 Catched Exception 설정.

propagation behaviors
www.springframework.co.krPropagation Behaviors
  • 트랜잭션 처리를 해야 하는 메소드의 트랜잭션 경계boundary를 설정합니다.
  • 새로운 트랜잭션을 시작해야 하는지, 끊어야 하는지등을 설정합니다.
  • 총 7가지 중 하나를 선택할 수 있습니다.
    • http://whiteship.tistory.com/703
    • CMT에서 지원하지 않는 Nested 트랜잭션 관련 설정을 할 수 있습니다.
isolation levels
www.springframework.co.krIsolation levels
  • 공통의 데이터에 동시적인 접근이 발생할 때 해당 트랜잭션의 독립성 정도를 조정합니다.
  • Concurrency Problems
    • Dirty read
    • Nonrepeatable read
    • Phantom reads
  • 총 5가지 레벨을 설정할 수 있습니다.
    • http://whiteship.tistory.com/704
    • 레벨이 높아질 수록 성능은 저하 됩니다.
transaction timeout
www.springframework.co.krTransaction timeout
  • 트랜잭션으로 묶여 있는 작업들이 순조롭게 진행된다면, 그리 오래 걸리지 않을 것입니다.
  • 따라서, 비정상적으로 길어지는 경우 문제가 발생한 것으로 생각하고 롤백 시킬 수 있습니다.
  • 새로운 트랜잭션 경계를 가지고 작업하는 메소드에 해당합니다.
    • PROPAGATION_REQUIRED
    • PROPAGATION_REQUIRES_NEW
    • PROPAGATION_NESTED
rollback rules
www.springframework.co.krRollback rules
  • 기본적으로 Runtime Exception이 발생할 경우에만 롤백이 됩니다.
  • 원하는 Exception이 발생할 때 롤백이 되도록 설정할 수 있습니다.
slide33
www.springframework.co.kr트랜잭션을 설정하는 방법
  • XML을 사용하는 방법
    • ProxyFactoryBean을 이용하는 방법
    • tx 네임스페이스를 사용하는 방법
  • 애노테이션을 사용하는 방법
  • 둘 다 결국은 내부적으로 Spring AOP를 사용합니다.
xml proxyfactorybean
www.springframework.co.krXML을 사용하는 방법ProxyFactoryBean을 사용하는 방법
  • org.springframework.transaction.interceptor.TransactionProxyFactoryBean
  • target
  • proxyInterfaces
  • transactionManager
  • transactionAttributes
slide36
www.springframework.co.kr소스 코드 보기
  • TransactionProxyFactoryBean을 사용한 트랜잭션 설정
  • chapter6/springContext.xml
xml tx
www.springframework.co.krXML을 사용하는 방법tx 네임스페이스를 사용하는 방법
  • tx 네임스페이스 등록하기
  • <tx:advice>
    • <tx:attributes>
      • <tx:method>
  • <aop:config>
    • <aop:advisor>
slide38
www.springframework.co.kr소스 코드 보기
  • tx, aop 네임스페이스를 사용한 트랜잭션 설정
  • chapter6/springContext.xml
slide39
www.springframework.co.krXML을 사용한 설정을 마치며…
  • 저걸 어떻게 다 외우나…
  • Eclipse가 있자나요.
slide41
www.springframework.co.kr애노테이션으로 트랜잭션 설정하기
  • 딱 한 줄만 XML에 추가해 주시면 됩니다.
    • <tx:annotation-driven />
    • 또는
    • <tx:annotation-driven transaction-manager="txManager" />
  • @Transactional 하나만 외우시면 됩니다.
slide42
www.springframework.co.kr소스 코드 보기
  • @Transactional 애노테이션을 사용하여 트랜잭션 설정하기.
  • chapter6/dao/MemberServiceImplWithTransactionAnnotaion.java