Transaction ㅇ Transaction 을 직접 구현하려면, 까다로운 설계와 복잡한 코드를 필요로 하고 수정에 공수가 많이 들게 된다. ㅇ 스프링에서 제공하는 Transaction Manager 를 사용하여 쉽고 간편하게 어려운 트랜잭션을 해결할 수 있다. xml.

Slides:



Advertisements
Similar presentations
멘토링 2 주차 장 프로그래밍을 위한 자바의 자료형  값이 변하지 않는 상수  메모리 기억공간인 변수.
Advertisements

명품 JAVA Programming 제 3 장 반복문, 배열, 예외처리.
어서와 Java는 처음이지! 제3장선택과 반복.
Spring MVC ㅇ 스프링 MVC 구성요소 설명 DispatcherServlet 클라이언트의 요청을 컨트롤러에게 전달하고
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
IntArray[0] int length 5 intArray 객체 제 3 장 반복문, 배열, 예외처리.
7장 배열 ②.
어서와 Java는 처음이지! 제4장 배열.
명품 JAVA Programming 제 13 장 스레드와 멀티태스킹.
Java Presentation 중간 시험2 풀이
제 4장 문 장 배정문 혼합문 제어문 표준 입출력.
제6장 제어(Control) 6.1 구조적 프로그래밍(Structured Programming)
실전 프로젝트 2 : 숫자야구 숫자 야구를 구현해보자.
자바란 무엇인가? JDK의 다운로드 및 설치 방법 Hello, Java 프로그램의 작성 자바 프로그램의 작동 원리
2주 실습강의 Java의 기본문법(1) 인공지능연구실.
Chapter 02 자바 기본구조 자바 프로그래밍의 기초적인 문법을 소개
제7장 제어구조 I – 식과 문장.
명품 JAVA Essential.
명품 JAVA Programming.
[INA470] Java Programming Youn-Hee Han
8장 자바 입출력.
IOC, DI 2015 Web Service Computing.
Department of Computer Software MyongJi University
7 스택.
Power Java 제10장 배열.
객체지향 언어와 클래스, 객체 ㅎㅎ 개요 클래스의 선언, 객체의 생성 및 속성 참조 방식 멤버 변수 메소드 한빛미디어(주)
자바 5.0 프로그래밍.
Choi, Namseok Java 기초 (Java의 제어문과 배열) Choi, Namseok
01. 직렬화와 역직렬화에 대하여 객체의 직렬화 직렬화와 역직렬화
명품 JAVA Essential.
클라우드 환경에서의 session 유지처리
AOP 개념 및 Spring의 AOP 기능.
명품 Java Programming.
최용술 장 Thread 최용술
2장 자바환경과 자바 프로그램 2.1 자바 개발 환경 2.2 자바 통합환경 2.3 자바 응용 프로그램과 애플릿 프로그램
2010학년도 2학기 객체지향의 이해.
DataScience Lab. 박사과정 김희찬 (월)
김 정 석 Web Programming 김 정 석
주소록 프로그램.
자바 5.0 프로그래밍.
제 4주 2014년 1학기 강원대학교 컴퓨터학부 담당교수: 정충교
ㅇ 스프링 설정파일 (dispatcher-servlet.xml)
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
DataScience Lab. 박사과정 김희찬 (월)
03. 안드로이드를 위한 Java 문법 제목. 03. 안드로이드를 위한 Java 문법 제목.
WAP Java Seminar
Ch.1 Iterator Pattern <<interface>> Aggregate +iterator
C# 09장. 상속성.
제 2장 어휘구조와 자료형 토 큰 리 터 럴 주 석 자 료 형 배 열 형.
컴퓨터공학실습(I) 3주 인공지능연구실.
Java IT응용시스템공학과 김형진 교수 5장. 객체지향 개념 public class SumTest {
Chapter3 : 객체지향의 개념 3.1 객체지향(object-oriented)과
Chap02 객체 지향 개념 2.1 객체지향(object-oriented)과 절차지향(procedural-oriented)
프로그래머를 위한 첫걸음 JDBC Lecture 001 BY MINIO
JA A V W. 04.
Spring DI 이해 및 활용.
내부 클래스와 내부 인터페이스에 대하여 내부 클래스의 선언 방법과 이용 방법 내부 인터페이스의 선언 방법과 이용 방법
CACM 구현 public class CACM { public CACM(File file)
자바 5.0 프로그래밍.
Java 3장. 자바의 기본 구조 I : 변수, 자료형, 연산자 public class SumTest {
Spring Security 2015 Web Service Computing.
JVM의 구조와 메모리 모델 JVM의 내부 구조 클래스 파일 클래스 로더 메소드(method) 영역 힙(heap) 영역
JSP 빈즈 1.JSP 빈즈? JSP와 연동을 위해 만들어진 컴포넌트 클래스를 말한다. JSP 빈즈는 컨테이너에 위치하며, 데이터 처리와 공용화된 기능을 제공하기 때문에 빈즈를 잘 활용하면 프로그램의 중복을 줄이고 좀더 원할한 유지보수가 가능한다. 물론 , 모든 JSP를.
자바 5.0 프로그래밍.
C# 10장. 참조형.
6장 클래스(상속).
컴퓨터 프로그래밍: 실습 1 제 1장 . 서론.
Java 5장. 객체지향 개념 public class SumTest {
11장 다형성과 추상 클래스, 인터페이스 Section 1 객체의 형 변환 Section 2 연산자 Section 3 다형성
관리자 페이지에서 관리자 승인 1. 정기권 신규고객 1. 로그인 화면 2. 차량등록여부 확인 3. 개인정보 활용 동의
Presentation transcript:

Transaction ㅇ Transaction 을 직접 구현하려면, 까다로운 설계와 복잡한 코드를 필요로 하고 수정에 공수가 많이 들게 된다. ㅇ 스프링에서 제공하는 Transaction Manager 를 사용하여 쉽고 간편하게 어려운 트랜잭션을 해결할 수 있다. xml code

Transaction ㅇ XML 트랜잭션 설정 <bean id=“transactionManager” class=“org.springframework.jdbc.datasource.DataSourceTransactionManager”> <aop:pointcut id="daoMethod" expression="execution(* com.spring.transaction.exam.model..*(..))" />

Transaction ㅇ Annotation 트랜잭션 설정 - XML - 자바 애노테이션 추가

Transaction ㅇ 트랜잭션 속성 - name : 트랜잭션이 적용될 메소드 이름, * 사용 가능 - propagation : 트랜잭션 전파 규칙 ㆍ REQUIRED( 기본값 ) : 현재 진행 중인 트랜잭션이 있다면 해당 트랜잭션 사용 없다면 새로운 트랜잭션을 생성 ㆍ MANDATORY : 진행 중인 트랜잭션이 없다면 예외 발생 ㆍ REQUIRES_NEW : 항상 새로운 트랜잭션 시작 기존 트랜잭션이 존재하면 기존 트랜잭션 중지 새로운 트랜잭션이 종료된 후 기존 트랜잭션 계속 진행 ㆍ SUPPORTS : 기존 트랜잭션이 존재할 경우 트랜잭션을 사용 진행 중인 트랜잭션이 존재하지 않더라도 메소드 정상 동작 ㆍ NOT_SUPPORTED : 메소드가 실행되는 동안 트랜잭션 일시 중지 메소드 실행이 종료된 후에 트랜잭션 계속 진행 ㆍ NEVER : 메소드가 트랜잭션을 필요로 하지 않음 진행 중인 트랜잭션이 존재하면 예외 발생 ㆍ NESTED : 기존 트랜잭션이 존재하면 중첩된 트랜잭션에서 메소드 실행 기존 트랜잭션이 존재하지 않으면 REQUIRED 와 동일하게 동작

Transaction ㅇ 트랜잭션 속성 - isolation : 트랜잭션 격리 수준 ㆍ DEFAULT : 기본 설정 사용 ㆍ READ_UNCOMMITTED : 다른 트랜잭션에서 커밋하지 않은 데이터 읽을 수 있음 ㆍ READ_COMMITTED : 다른 트랜잭션에 의해 커밋된 데이터 읽을 수 있음 ㆍ REPEATABLE_READ : 처음 읽어온 데이터와 두번째 읽어온 데이터가 동일한 값을 갖음 ㆍ SERIALIZABLE : 동일한 데이터에 대해서 동시에 두개 이상 트랜잭션이 수행 될 수 없음 - rollback-for : 트랜잭션 롤백을 적용할 예외 타입 지정 기본값은 RuntimeException - no-rollback-for : 롤백하지 않을 예외 타입 설정 - timeout : 트랜잭션의 타임아웃 시간을 초 단위로 설정

config.xml (1 / 3) Transaction – XML <beans xmlns=" xmlns:context=" xmlns:p=" xmlns:aop=" xmlns:tx=" xmlns:xsi=" xsi:schemaLocation=" <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager" p:dataSource-ref="dataSource" />

config.xml (2 / 3) Transaction – XML <aop:pointcut id="daoMethod" expression="execution(* edu.seowon.transaction.xml.controller..*(..))" />

config.xml (3 / 3) Transaction – XML

Main.java Transaction – XML public class Main { public static void main(String[] args) { ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext( "edu/seowon/transaction/xml/config.xml"); Object obj = ctx.getBean("listController"); ((ListController)obj).select(); ((ListController)obj).insert("x", false); ((ListController)obj).insert("z", true); }

ListController.java Transaction – XML public class ListController private BoardDao boardDao; public void select() { List > list = boardDao.selectBoard(); for(int i = 0; i < list.size(); i++) { System.out.println(" 아이디 : " + list.get(i).get("ID")); System.out.println(" 비밀번호 : " + list.get(i).get("PW")); System.out.println(" 성명 : " + list.get(i).get("NAME")); } public void insert(String id, boolean flag) { boardDao.insertBoard(id); if(flag) throw new RuntimeException(); System.out.println("id : " + id + " 입력 "); }

BoardDao.java Transaction – XML public class BoardDao private JdbcTemplate jdbcTemplate; public List > selectBoard() { String sql = "SELECT * FROM MEMBER_M1"; List > list = jdbcTemplate.queryForList(sql); return list; } public void insertBoard(String id) { String sql = "INSERT INTO MEMBER_M1 (ID, PW, NAME, PHONE, ) " + " VALUES (?, ?, ?, ?, ?)"; jdbcTemplate.update(sql, id, "1", " 김재욱 ", "010", }

config.xml (1 / 2) Transaction – Annotation <beans xmlns=" xmlns:context=" xmlns:p=" xmlns:tx=" xmlns:xsi=" xsi:schemaLocation=" <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager" p:dataSource-ref="dataSource" />

config.xml (2 / 2) Transaction – Annotation

Main.java Transaction – Annotation public class Main { public static void main(String[] args) { ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext( "edu/seowon/transaction/anno/config.xml"); Object obj = ctx.getBean("listController"); ((ListController)obj).select(); ((ListController)obj).insert("e", false); ((ListController)obj).insert("f", true); }

ListController.java Transaction – public class ListController private BoardDao boardDao; public void select() { List > list = boardDao.selectBoard(); for(int i = 0; i < list.size(); i++) { System.out.println(" 아이디 : " + list.get(i).get("ID")); System.out.println(" 비밀번호 : " + list.get(i).get("PW")); System.out.println(" 성명 : " + list.get(i).get("NAME")); } public void insert(String id, boolean flag) { boardDao.insertBoard(id); if(flag) throw new RuntimeException(); System.out.println("id : " + id + " 입력 "); }