Spring Framework JDBC, Transaction

Slides:



Advertisements
Similar presentations
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
Advertisements

Chapter 16 : Struts 프레임워크 2. chapter 16 : Struts 프레임워크 2.
Oozie Web API 기능 테스트 이승엽.
컴퓨터프로그래밍 1주차실습자료 Visual Studio 2005 사용법 익히기.
최윤정 Java 프로그래밍 클래스 상속 최윤정
제 09 장 데이터베이스와 MySQL 학기 인터넷비즈니스과 강 환수 교수.
목차 백업과 복원.
MS SQL Server - 마이크로소프트 사가 윈도우 운영 체제를 기반으로 개발한 관계 DBMS
Windows Server 장. 사고를 대비한 데이터 백업.
4장. 웹로직 서버상에서의 JDBC와 JTA의 운용
Chapter 7. RAS(전화접속,VPN) & IAS
FTP 프로그램 채계화 박재은 박수민.
컴퓨터응용과학부 Java Enterprize(DB) 제 15 주
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
모바일 자바 프로그래밍 JDBC / WAP Ps lab 오민경.
18강. 데이터 베이스 - II JDBC 살펴보기 Statement객체 살펴보기 Lecturer Kim Myoung-Ho
D / K / I / T / E / C / H / N / O / L / O / G / Y
Power Java 제14장 배치 관리자.
ASP.NET AJAX 비동기 게시판 작성 2007 컴퓨터공학실험( I )
KHS JDBC Programming 4 KHS
21강. 스프링JDBC JDBC를 이용한 반복코드 줄이기 Spring빈을 이용한 코드 간소화
Chapter 03 : 서블릿 ( Servlet ) 개요. chapter 03 : 서블릿 ( Servlet ) 개요.
10장. 예외처리.
속성과 리스너 초기화 파라미터 외 파라미터에 대해 이해한다. 리스너를 생성해보고 사용에 대해 이해한다.
Grade Server Team14. Attention Seeker
23강. 트랜잭션(Transaction)-II
자바 5.0 프로그래밍.
CHAP 13. 방명록 만들기 실습.
전자정부 표준프레임워크 호환성 가이드 전자정부 표준프레임워크 사업단 실행환경 개발팀.
2장. 데이터베이스 관리 시스템 데이터베이스 관리 시스템의 등장 배경 데이터베이스 관리 시스템의 정의
Spring 프레임워크의 이해 2. Spring Introduction.
영상처리 실습 인공지능연구실.
RMI Messenger 지도 : 김정배 교수님 조봉진.
Spring 프레임워크의 이해 – day2 자바지기.
Spring 프레임워크의 이해 1.Architecture.
뇌를 자극하는 Windows Server 2012 R2
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
Spring 프레임워크의 이해 3. Spring IoC 이해 및 활용.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
15장 컬렉션 프레임워크 Section 1 컬렉션 프레임워크의 개요 Section 2 리스트 Section 3 셋
USN(Ubiquitous Sensor Network)
컴퓨터응용과학부 Java Enterprize(DB) 제 14 주
15강. 폼 데이터 값 검증 Validator를 이용한 검증 ValidationUtils 클래스
14강. 세션 세션이란? 세션 문법 Lecturer Kim Myoung-Ho Nickname 블스
5.2 트랜잭션 서비스 추상화.
CHAP 21. 전화, SMS, 주소록.
4. Spring 프레임워크의 AOP 개념.
Teaming pms.
( Windows Service Application Debugging )
학습목표 처음 만드는 비주얼 베이직 프로그램 프로그램 실행과 실행 파일 생성. 학습목표 처음 만드는 비주얼 베이직 프로그램 프로그램 실행과 실행 파일 생성.
12강. 컨트롤러 컨트롤러 클래스 제작 요청 처리 메소드 제작 뷰에 데이터 전달
제 18 장 (Oracle) 오라클에서 트랜잭션 지원
오라클 11g 보안.
Spring Introduction.
JSP Programming with a Workbook
세션에 대해 알아보고 HttpSession 에 대해 이해한다 세션 관리에 사용되는 요소들을 살펴본다
MIDP 네트워크 프로그래밍 ps lab 김윤경.
발표자 : 이지연 Programming Systems Lab.
9 브라우저 객체 모델.
Android -Data Base 윤수진 GyeongSang Univ. IT 1.
10주 MariaDB에서 트랜잭션 지원 및 동시성 제어 기능
Power Java 제14장 배치 관리자.
Mariadb 트랜잭션과 동시성 제어 장종원
CHAP 15. 데이터 스토리지.
 6장. SQL 쿼리.
CODE INJECTION 시스템B 김한슬.
프로젝트 결과 발표 네트워크정보통신과 강동성 이현미.
임시테이블과 테이블변수 SQLWorld Study Group - 최명환 -.
6 객체.
Ⅰ. 데이터베이스 정의 Ⅱ. MS SQL 서버 Ⅲ. 데이터베이스 인터페이스
Presentation transcript:

Spring Framework JDBC, Transaction EBAS 솔루션본부 교육자료 – Spring 프레임워크 Spring Framework JDBC, Transaction 2007. 5

CONTENTS 교육 개요 Spring Transaction 사용방법 Spring JDBC 개념 Spring JDBC 사용방법 교육 목표 및 내용 교육 기대 수준 Spring JDBC 개념 Spring JDBC 란? Spring JDBC를 이용할때 개발자가 구현해야 할 부분 Spring JDBC 사용방법 JdbcTemplate 기반 하에서 구현 SQLObjects를 이용하여 구현 쿼리 관리 PrimaryKey 생성 기능 Spring Transaction 개념 Spring Transacatin ? Spring Transaction 핵심 인터페이스 Spring Transaction 사용방법 프로그램적으로 트랜잭션 처리 선언적으로 트랜잭션 처리

I. 교육 개요 1. 교육목표 및 내용 구분 주요 내용 비고 1. 교육목표 및 내용 2. 교육 기대수준 Spring 프레임워크의 JDBC 및 Transaction 지원에 대한 설명 및 실습 1. Spring JDBC 추상 레이어에 대한 필요성 제시 2. Spring JDBC 추상 레이어의 처리 메커니즘 설명 3. 각 쿼리의 종류에 따른 Spring JDBC 이용 방법에 대한 설명 및 실습 4. J2EE 환경에서의 기본적인 Transaction 처리 메커니즘 설명 5. Spring 프레임워크의 Transaction 처리 방법 설명 및 실습 기본 1시간 2. 교육 기대수준

II. Spring JDBC의 개념 1. Spring JDBC란? Spring JDBC? JDBC를 한 단계 더 추상화시켜 새로운 JDBC API를 제공 SQL 쿼리의 가독성 개발속도 향상 잘못구현으로 인해 발생했던 문제점을 해결 Spring AOP를 통해 Infrastructure에 해당하는 Exception, Logging과 관련한 중복 코드를 제거했지만 퍼시스턴스 계층에서도 많은 중복 코드가 발생

II. Spring JDBC의 개념 2. Spring JDBC를 이용할 때 개발자가 구현해야 할 부분 작업 (DAO 템플릿) 개발자 (DAO 콜백) Connection 관리 O X SQL Statement 관리 ResultSet 관리 Row 데이터 추출 파라미터 선언 파라미터 Setting 트랜젝션 관리 5

III. Spring JDBC 사용방법 1. DataSource 사용 방법 JNDI로 부터 DataSource 사용 org.springframework.jndi.JndiObjectFactoryBean DataSource 커넥션 풀 사용 org.apache.commons.dbcp.BasicDataSource 테스트시에 DataSource 사용 Org.springframework.jdbc.datasource.DriverManagerDataSource 6

III. Spring JDBC 사용방법 2. JdbcTemplate 기반 하에서 구현 Data 쓰기 Data 읽기 getJdbcTemplate().update 메소드 실행 getJdbcTemplate().batchUpdate 메소드 실행 Data 읽기 getJdbcTemplate().query 메소드 실행 Stored Procedure 호출 getjdbcTemplate().execute 메소드 실행 7

III. Spring JDBC 사용방법 3. SqlObjects를 이용하여 구현 데이터베이스 작업을 객체로 모델링하는 방법을 제공 SQLUpdate 객체 만들기 org.springframework.jdbc.object.SqlUpdate 상속 받기 MappingSqlQuery를 사용한 데이버베이스 질의 org.springframework.jdbc.object.MappingSqlQuery 상속 받기 8

III. Spring JDBC 사용방법 4. Primary Key 생성 기능 빈 설정 방법 <bean id="boardFileIncrementer" class="org.springframework.jdbc.support.incrementer.MySQLMaxValueIncrementer"> <property name="dataSource" ref="dataSource" /> <property name="incrementerName" value="BOARDFILESEQUENCE" /> <property name="columnName" value="VALUE" /> </bean> <bean id="boardIncrementer" class="org.springframework.jdbc.support.incrementer.OracleSequenceMaxValueIncrementer"> <property name="incrementerName" value="BOARDSEQUENCE" /> 9

III. Spring ORM 지원 기능 1. Hibernate 빈 설정 방법 <bean id=“sessionFactory" class=“org.springframework.orm.hibernate.LocalSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name=“mappingResource”> <list> <value>foo.hbm.xml</value> <value>bar.hbm.xml</value> </list> </property> <property name=“mappingDirectoryLocations’> <value>classpath:/cyberdigm/custom/maps</value> </bean> 10

III. Spring ORM 지원 기능 2. JDO JDO 빈 설정 방법 썬 마이크로시스템즈의 표준 퍼시스턴스 규약 <bean id=“persistenceManagerFactory" class=“org.springframework.orm.jdo.LocalPersistenceManagerFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name=“jdoProperties”> <props> <prop key=“javax.jdo.option.PersistenceManagerFactoryClass”> ${persistenceManagerFactoryClass} </prop> </props> </property> </bean> 11

III. Spring ORM 지원 기능 3. iBATIS iBATIS 빈 설정 방법 <bean id=“sqlMapClient" class=“org.springframework.orm.ibatis.SqlMapClientFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name=“configLocation”> <value>sql-map-config.xml</value> </property> </bean> 12

III. Spring ORM 지원 기능 4. OJB OJB 빈 설정 방법 13

IV. Spring Transaction 개념 EJB의 성장 원동력 EJB 밴더들의 신뢰할 만한 트랜잭션 지원이 엔터프라이즈 환경에서도 자바가 급성장하게된 원동력. 트랜잭션은 처리는 업무의 데이터 무결성과 직결되기 때문. JDBC기반의 트랜잭션 처리의 문제점 트랜잭션 정책 변경 후 반영하는 데 많은 시간이 소요. EJB 컨테이너의 트랜잭션 처리는 EJB에 국한되어 있어서 EJB를 사용하지 않을 경우에는 이 기능을 사용하기 어려움 비지니스 계층과 퍼시스턴스 계층 어느 곳에서 트랜잭션을 처리해야 할까? 트랜잭션은 업무를 처리하기 위한 단위. 하나의 유즈 케이스에 해당하는 업무를 처리하는 단위는 비즈니스 계층에서 담당하고 있기에 트랜잭션 처리를 비즈니스 계층의 메소드 단위별로 처리하는 것이 좋음. 14

IV. Spring Transaction 개념 비즈니스 계층에서 트랜잭션 처리의 문제 비즈니스 계층에서 트랜잭션을 처리할 경우 트랜잭션 처리를 위한 구현부분이 추가 비즈니스 계층의 복잡도를 증가시키는 결과를 초래 문제 해결 EJB - 선언적 트랜잭션 사용 (EJB 설정 파일에서 트랜잭션을 어떻게 처리해야 할지를 설정) Spring 프레임워크 - EJB컨테이너와 같이 트랜잭션을 선언적으로 처리할 수 있도록 지원 (AOP) Spring Framework에서 지원하고 있는 트랜잭션 처리 POJO 빈을 기반으로 하고 있기 때문에 EJB 컨테이너를 사용하지 않는 곳에서도 EJB와 같은 방법으로 트랜잭션을 처리하는 것이 가능. 15

IV. Spring Transaction 개념 TransactionDefinition 트랜잭션의 4가지 속성(ACID) Atomicity(원자성) 모든 작업 완료 or 모든 작업 완료되지 않음 (Commit or Rollback) 트랜잭션 내의 작업 중 오류가 발생하면 트랜잭션 내의 모든 작업 롤백 Consistency(일관성) 트랜잭션 중에 오류 없이 유효한 데이터만 데이터 베이스에 저장 Isolation(격리성) 트랜잭션 중에 변경된 내용이 트랜잭션이 완료되기 전까지 다른 트랜잭션에 영향을 미쳐서는 안됨 Durability(지속성) 트랜잭션이 완료된 경우 시스템 고장이나 네트워크 에러 등으로 데이터가 유실되지 않고 정상적으로 기록 16

IV. Spring Transaction 개념 TransactionDefinition (org.springframework.transaction.TransactionDefinition) 개발자가 트랜잭션 제어가능 범위 getPropagationBehavior() 트랜잭션이 실행되어야 하는 범위에 대한 제어와 여러 개의 트랜잭션이 어떻게 상호작용하는지 결정 getIsolationLevel() 실행하는 트랜잭션의 격리레벨 지정 현재 트랜잭션 내에서 변경된 데이터가 다른 트랜잭션에 반영될지에 대한 레벨을 결정 getTimeout() 실행하는 트랜잭션이 시작해서 종료할 때까지의 시간을 초 단위로 제어 isReadonly() 실행하는 트랜잭션이 read-only 상태인지 아닌지를 결정 17

IV. Spring Transaction 개념 TransactionDefinition 전달 행위(Propagation Level) 전달 행위 상세 설명 TransactionDefinition .PROPAGATION_REQUIRED 이미 하나의 트랜잭션이 존재하면 그 트랜잭션을 지원하고, 트랜잭션이 없다면 새로운 트랜잭션을 시작한다. .PROPAGATION_SUPPORTS 이미 트랜잭션이 존재하면 그 트랜잭션을 지원하고, 트랜잭션이 없다면 비-트랜잭션 형태로 수행한다. .PROPAGATION_MANDATORY 이미 트랜잭션이 존재하면 그 트랜잭션을 지원하고, 활성화된 트랜잭션이 없다면 예외를 던진다. .PROPAGATION_REQUIRED_NEW 언제나 새로운 트랜잭션을 시작한다. 이미 활성화된 트랜잭션이 있다면 일시 정지한다. .PROPAGATION_NOT_SUPPORTED 활성화된 트랜잭션을 가진 수행을 지원하지 않는다. 언제나 비-트랜잭션으로 수행하고 존재하는 트랜잭션일시 정지한다. .PROPAGATION_NEVER 활성화된 트랜잭션이 존재하더라도 비-트랜잭션으로 수행한다. 활성화된 트랜잭션이 존재하면 예외를 던진다. 18

IV. Spring Transaction 개념 TransactionDefinition PROPAGATION_REQUIRED 이미 트랜젝션이 실행되고 있는 있을 경우 그 트랜젝션이 전달 되서 사용 트랜젝션 보호 아래에 수행으로 데이터를 바꾸는 작업(update, delete)중에 유용하게 사용 Transaction REQUIRED Service Method 1 Tx1 DAO Method 1 Tx1 Tx1 Tx1 Transaction REQUIRED Service Method 2 Tx1 DAO Method 2 Tx1 Tx1 19

IV. Spring Transaction 개념 TransactionDefinition PROPAGATION_SUPPORTS CASE 1 호출하는 클라이언트의 트랜젝션 속성을 그대로 이어 받는다. Transaction REQUIRED Service Method 1 Tx1 DAO Method 1 Tx1 Tx1 Tx1 Transaction SUPPORTS Service Method 2 Tx1 DAO Method 2 Tx1 Tx1 20

IV. Spring Transaction 개념 TransactionDefinition PROPAGATION_SUPPORTS CASE 2 Service Method 1 DAO Method 1 Service Method 2 DAO Method 2 21

IV. Spring Transaction 개념 TransactionDefinition PROPAGATION_MANDATORY CASE 1 메소드가 꼭 트랜젝션 SCOPE 내에서 실행 Transaction REQUIRED Service Method 1 Tx1 DAO Method 1 Tx1 Tx1 Tx1 Transaction REQUIRED Service Method 2 Tx1 DAO Method 2 Tx1 Tx1 22

IllegalTransactionStateException IV. Spring Transaction 개념 2. Spring Transaction 핵심 인터페이스 TransactionDefinition PROPAGATION_MANDATORY CASE 2 Service Method 1 DAO Method 1 IllegalTransactionStateException Service Method 2 DAO Method 2 23

Transaction REQUIRES_NEW IV. Spring Transaction 개념 2. Spring Transaction 핵심 인터페이스 TransactionDefinition PROPAGATION_REQUIRES_NEW 메소드 실행시 언제나 새로운 트랜젝션내에서 수행 Transaction REQUIRED Service Method 1 Tx1 DAO Method 1 Tx1 Tx1 Tx1 Transaction REQUIRES_NEW Service Method 2 Tx2 DAO Method 2 Tx2 Tx2 24

Transaction NOT_SUPPORTED IV. Spring Transaction 개념 2. Spring Transaction 핵심 인터페이스 TransactionDefinition PROPAGATION_NOT_SUPPORTED CASE 1 메소드 실행 시 트랜젝션 반영이 되지 않음. Transaction REQUIRED Service Method 1 Tx1 DAO Method 1 Tx1 Tx1 Tx1 Transaction NOT_SUPPORTED Service Method 2 DAO Method 2 25

Transaction NOT_SUPPORTED IV. Spring Transaction 개념 2. Spring Transaction 핵심 인터페이스 TransactionDefinition PROPAGATION_NOT_SUPPORTED CASE 2 Service Method 1 DAO Method 1 Transaction NOT_SUPPORTED Service Method 2 DAO Method 2 26

IllegalTransactionStateException IV. Spring Transaction 개념 2. Spring Transaction 핵심 인터페이스 TransactionDefinition PROPAGATION_NEVER CASE 1 메소드는 기존 트랜젝션 SCOPE에서 실행될 수 없다. Transaction REQUIRED Service Method 1 Tx1 DAO Method 1 Tx1 Tx1 IllegalTransactionStateException Transaction NEVER Service Method 2 DAO Method 2 27

IV. Spring Transaction 개념 TransactionDefinition PROPAGATION_NEVER CASE 2 Service Method 1 DAO Method 1 Transaction NEVER Service Method 2 DAO Method 2 28

IV. Spring Transaction 개념 TransactionDefinition 격리 레벨(Isolation Level) 격리 레벨 상세 설명 TransactionDefinition .ISOLATION_DEFAULT 개별적인 PlatformTransactionManager를 위한 디폴트 격리 레벨. .ISOLATION_READ_UNCOMMITED 격리 레벨 중 가장 낮은 격리 레벨. 이 격리 레벨은 다른 Commit 되지 않은 트랜잭션에 의해 변경된 데이터를 볼 수 있기 때문에 거의 트랜잭션의 기능을 수행하지 않는다. .ISOLATION_READ_COMMITED 대개의 데이터베이스에서의 디폴트로 지원하는 격리 레벨. 이 격리 레벨은 다른 트랜잭션에 의해 Commit 되지 않은 데이터는 다른 트랜잭션에서 볼 수 없도록 한다. 그러나 개발자들은 다른 트랜잭션에 의해 입력되거나 수정된 데이터를 조회할 수 있다. .ISOLATION_REPEATABLE_READ 다른 트랜잭션이 새로운 데이터를 입력했다면 새롭게 입력된 데이터를 조회할 수 있다는 것을 의미 .ISOLATION_SERIALIZABLE 가장 많은 비용이 들지만 신뢰할 만한 격리 레벨을 제공, 하나의 트랜잭션이 완료된 후에 다른 트랜잭션이 실행하는 것처럼 지원 29

IV. Spring Transaction 개념 TransactionDefinition 격리 레벨(Isolation Level) ANSI 표준 (Preventable Phenomena) 과도기 예방 Dirty Read – Tx1 에서 commit 하지 않은 상태에서 Tx2 가 변경된 값을 반영 Norepeatable Read – Tx1 에서 commit(Update, Delete) 하고 Tx2 가 변경된 값을 반영 Phantom Read – Tx1 에서 commit(Insert) 하고 Tx2 가 삽입된 값을 반영 Level Dirty Read Norepeatable Read Phantom Read READ UNCOMMITTED Permitted READ COMMITTED Not REPEATABLE READ SERIALIZABLE 30

IV. Spring Transaction 개념 TransactionDefinition JDBC 별 사용 가능 Level Oracle은 Read Commited, Serialized, Read-Only를 지원 MS-SQL은 ANSI 표준을 모두 지원 Level Oracle JDBC MS-SQL JDBC READ UNCOMMITTED X O READ COMMITTED REPEATABLE READ SERIALIZABLE 31

IV. Spring Transaction 개념 TransactionStatus (org.springframework.transaction.TransactionStatus) 트랜잭션의 상태를 관리하는 역할을 담당하는 인터페이스 PlatformTransactionManager에서 트랜잭션을 Commit할지 Rollback할지를 결정하기 위해 사용 32

IV. Spring Transaction 개념 PlatformTransactionManager (org.springframework.transaction.PlatformTransactionManager) 실질적인 트랜잭션을 실행하는 역할 PlatformTransactionManager 인터페이스를 구현하는 다양한 구현체 JTA : org.springframework.transaction.jta.JtaTransactionManager JMS : org.springframework.jms.connection.JmsTransactinoManager DataSource : org.springframework.jdbc.datasource.DataSourceTransactionManager Hibernate : org.springframework.orm.hibernate3.HibernateTransactionManager 이외에도 다양한 ORM 프레임워크들을 지원하기 위한 TransactionManager를 지원 TransactionManager 클래스를 참고하여 자체개발하여 사용하는 것이 가능 33

V. Spring Transaction 사용방법 1. 프로그램적으로 트랜잭션 처리 트랜잭션 실질적인 트랜잭션을 실행하는 역할 34

V. Spring Transaction 사용방법 1. 프로그램적으로 트랜잭션 처리 트랜잭션 Template 실질적인 트랜잭션을 실행하는 역할 35

V. Spring Transaction 사용방법 2. 선언적으로 트랜잭션 처리 선언적으로 트랜잭션 처리 실질적인 트랜잭션을 실행하는 역할 36

Q & A