ALTIBASE 사용자가이드 Templete

Similar documents
ALTIBASE 사용자가이드 Templete

ALTIBASE 사용자가이드 Templete

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

ALTIBASE 사용자가이드 Templete

Spring Boot/JDBC JdbcTemplate/CRUD 예제

Interstage5 SOAP서비스 설정 가이드

Spring Boot

ALTIBASE 사용자가이드 Templete

ALTIBASE 사용자가이드 Templete

슬라이드 1

표준프레임워크로 구성된 컨텐츠를 솔루션에 적용하는 것에 문제가 없는지 확인

ALTIBASE 사용자가이드 Templete

ALTIBASE 사용자가이드 Templete

슬라이드 1

JDBC 소개및설치 Database Laboratory

교육2 ? 그림

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

PowerPoint Presentation

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

쉽게 풀어쓴 C 프로그래밊

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

Microsoft Word - src.doc

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

ALTIBASE 사용자가이드 Templete

- JPA를사용하는경우의스프링설정파일에다음을기술한다. <bean id="entitymanagerfactory" class="org.springframework.orm.jpa.localentitymanagerfactorybean" p:persistenceunitname=

Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx

JAVA PROGRAMMING 실습 08.다형성

PowerPoint Template

ISP and CodeVisionAVR C Compiler.hwp

4 주차 - SPRING 환경설정및구현 Spring 기반의웹프로젝트를구성하고싶어요 T^T Spring 기반의웹환경구축 1. web.xml 수정으로 Spring 을설정하는방법 2. eclipse Spring Plug-In 을활용한템플릿프로젝트자동구성필수는아니지만해놓으면편

Windows 8에서 BioStar 1 설치하기

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

슬라이드 1

개요오라클과티베로에서 JDBC 를통해접속한세션을구분할수있도록 JDBC 접속시 ConnectionProperties 를통해구분자를넣어줄수있다. 하나의 Node 에다수의 WAS 가있을경우 DB 에서 Session Kill 등의동작수행시원하는 Session 을선택할수있다.

(jpetstore \277\271\301\246\267\316 \273\354\306\354\272\270\264\302 Spring MVC\277\315 iBatis \277\254\265\277 - Confluence)

PowerPoint Presentation

untitled

JUNIT 실습및발표

MasoJava4_Dongbin.PDF

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1"); void method() 2"); void method1() public class Test 3"); args) A

* Factory class for query and DML clause creation * tiwe * */ public class JPAQueryFactory implements JPQLQueryFactory private f

rmi_박준용_final.PDF

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

Network Programming

을풀면된다. 2. JDK 설치 JDK 는 Sun Developer Network 의 Java( 혹은 에서 Download > JavaSE 에서 JDK 6 Update xx 를선택하면설치파일을

1. Windows 설치 (Client 설치 ) 원하는위치에다운받은발송클라이언트압축파일을해제합니다. Step 2. /conf/config.xml 파일수정 conf 폴더에서 config.xml 파일을텍스트에디터를이용하여 Open 합니다. config.xml 파일에서, 아

단계

ALTIBASE 사용자가이드 Templete

FileMaker 15 ODBC 및 JDBC 설명서

PowerPoint 프레젠테이션

PowerPoint Presentation

쉽게 풀어쓴 C 프로그래밍

C++ Programming

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

Facebook API

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

Microsoft PowerPoint - 04-UDP Programming.ppt

내장서버로사용. spring-boot-starter-data-jpa : Spring Data JPA 사용을위한설정 spring-boot-devtools : 개발자도구를제공, 이도구는응용프로그램개발모드에서유 용한데코드가변경된경우서버를자동으로다시시작하는일들을한다. spri

ALTIBASE 사용자가이드 Templete

제11장 프로세스와 쓰레드

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

슬라이드 1

Design Issues

게시판 스팸 실시간 차단 시스템

PowerPoint Presentation

윈도우시스템프로그래밍

FileMaker ODBC and JDBC Guide

Spring Data JPA Many To Many 양방향 관계 예제

Microsoft PowerPoint - CSharp-10-예외처리

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V

PowerPoint 프레젠테이션

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r

FileMaker ODBC 및 JDBC 가이드

Chapter 1

기술자료

C# Programming Guide - Types

No Slide Title

슬라이드 1

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras

C. KHU-EE xmega Board 에서는 Button 을 2 개만사용하기때문에 GPIO_PUSH_BUTTON_2 과 GPIO_PUSH_BUTTON_3 define 을 Comment 처리 한다. D. AT45DBX 도사용하지않기때문에 Comment 처리한다. E.

chapter1,2.doc

슬라이드 1

블로그_별책부록

서현수

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

PowerPoint Presentation

< 목차 > Ⅰ. 개요 3 Ⅱ. 실시간스팸차단리스트 (RBL) ( 간편설정 ) 4 1. 메일서버 (Exchange Server 2007) 설정변경 4 2. 스팸차단테스트 10

JAVA PROGRAMMING 실습 05. 객체의 활용

@OneToOne(cascade = = "addr_id") private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a

슬라이드 제목 없음

PowerPoint Presentation

FileMaker ODBC and JDBC Guide

교육자료

작성자 : 김성박\(삼성 SDS 멀티캠퍼스 전임강사\)

슬라이드 1

어댑터뷰

4S 1차년도 평가 발표자료

Spring

Transcription:

Real Alternative DBMS ALTIBASE, Since 1999 Spring 연동가이드 2014. 10 Copyright c 2000~2014 ALTBASE Corporation. All Rights Reserved.

Document Control Change Record Date Author Change Reference 2010-08 snkim Created 2014-10 Dbpark Updated Reviews Date Name (Position) Distribution Name Location Spring 연동가이드 2 page of 31

목차 개요... 4 SPRING 이란?... 5 Spring 의특징... 5 개발전설정사항... 6 Spring Framework 환경구축... 6 ALTIBASE JDBC Driver 얻는방법... 7 SETTING UP JDBC DRIVER... 8 프로젝트에설정하는방법 (Eclipse)... 8 web application 에설정하는방법... 9 DATASOURCE 설정... 10 DriverManagerDataSource 이용... 10 DBCP 를이용... 11 ALTIBASE 의 ConnectionPool 을이용... 13 ADDITIONAL CONNECTION... 15 FailOver 를이용한 Connection... 15 ALTIBASE5 와이전버전을동시에 Connection... 16 트랜잭션관리... 18 DataSourceTransactionManager 설정... 18 TransactionProxyFactoryBean 을이용한선언적트랜잭션처리... 19 분산트랜잭션처리... 20 SPRING 연동시주의사항... 23 LOB 데이터처리... 23 부록... 24 HelloSpring 구현... 24 Spring 연동가이드 3 page of 31

개요 본문서는 Spring에서 ALTIBASE와연동하는방법에대해기술한다. Spring Framework 3.2.x, ALTIBASE는 6.3.1, 개발 IDE로는 Eclipse를사용하고, 문서이외에각 chapter 별로예제가제공되므로해당예제를참고하면된다. 본문서와더불어개발시참고해야할문서들은다음과같다. 1. ALTIBASE 개발가이드 2. JAVA 개발가이드 3. ALTIBASE_JBOSS 연동가이드 4. ALTIBASE_TOMCAT 연동가이드 5. ALTIBASE_WEBSPERE 연동가이드 6. ALTIBASE_WEBLOGIC 연동가이드 7. ALTIBASE_iBATIS 연동가이드 8. ALTIBASE_HIBERNATE 연동가이드 Spring 연동가이드 4 page of 31

Spring 이란? Spring Framework은 Enterprise Application에서필요로하는기능들을제공하는오픈소스프레임워크이다. EJB 컨테이너에비해 lightweight한컨테이너로서 POJO(Plain Old Java Object: 기존의일반자바객체 ) 의생성, 소멸등라이프사이클을관리해주며트랜잭션관리, 로깅, 보안등과같은모듈을제공한다. Spring 의특징 Spring 은다음과같은특징이있다. 1. J2EE 에비해 lightweight 한컨테이너이다. 2. 자바객체의생성소멸과같은라이프사이클을관리하며, 프로그램에서는객체를생성할필요없이, Spring 으로부터필요한객체를가져와사용할수있다. 3. IoC(Inversion of Control) 와 DI(Dependency Injection) 을지원한다. 즉, bean 설정파일을통해객체들의의존관계를설정할수있다.. 4. AOP(Aspect Oriented Programming) 를지원하므로여러모듈에서공통으로사용되지만, 실제모듈의핵심은아닌기능 ( 예 ) 트랜잭션이나, 로깅, 보안과같은기능 ) 을분리하여각모듈에적용할수있다. 5. EJB 처럼특정인터페이스를구현하거나특정클래스를상속받지않은일반자바객체인 POJO 를지원하다. 따라서기존에작성한소스들을수정하지않고 Spring 에서사용이가능하다. 6. 트랜잭션처리를위한일관된방법을제공한다. 7. 다양한 API 를제공한다. Spring 연동가이드 5 page of 31

개발전설정사항 Spring Framework 를사용하기위해서는 Spring 관련 jar 파일이필요하다. 또한 ALTIBASE 와연동하기위해서는 ALTIABSE JDBC Driver 가필요하다. 본장에서는 Spring 환경을구축하는방법과 ALTIBASE JDBC Diver 를얻는방법에대해설명한다. Spring Framework 환경구축 Eclipse 스프링개발도구 (STS) 와 Maven 을이용하여손쉽게 Spring 환경을구축할수있다. Maven 이란? 프로젝트관리도구이다. 프로젝트오브젝트모델, 표준집합, 프로젝트라이프사이클, 의존성관리시스템, 라이프사이클에정의된단계에서플러그인골을실행하기위한로직을포함하는관리툴이다. Maven 예시 <dependencies> <dependency> <groupid>org.springframework</groupid> <artifactid>spring-context</artifactid> <version>3.2.xx.release</version> </dependency> </dependencies> * ALTIBASE MyBatis 연동가이드부록 2 를참조하도록한다. * 붉은색표시는패치버전에맞게설정하도록한다. Spring 연동가이드 6 page of 31

ALTIBASE JDBC Driver 얻는방법 ALTIBASE 에서제공하는 JDBC driver 는 Altibase.jar 파일이다. 이파일은 ALTIBASE 가설치되어있는서버의 $ALTIBASE_HOME/lib 디렉토리안에존재한다. ALTIBASE 5 버전부터는 $ALTIBASE_HOME/lib 디렉토리에 Altibase.jar 파일과 Altibase5.jar 파일이존재하는데, Altibase.jar 는일반 JDBC Driver 파일이고, Altibase5.jar 는 ALTIBASE 5 버전과그이하의버전을함께연동하고싶을때사용하는 JDBC Driver 파일이다. 따라서하나의 ALTIBASE DB 와연동하거나, 또는버전이동일한여러대의 ALTIBASE 와연동할경우에는 $ALTIBASE_HOME/lib/Altibase.jar 파일을사용하면된다. 연동하려는 ALTIBASE DB Server 와 ALTIBASE JDBC Driver 가호환가능한지확인을위해 ALTIBASE JDBC Driver 버전확인이필요하다. ALTIBASE JDBC Driver 버전을확인하는방법은다음의명령어를수행하면된다. $ java jar Altibase.jar JDBC Driver Info : Altibase Ver = 6.3.1.2.6 for JavaVM v1.4, CMP:7.1.1, Oct 6 2014 13:54:56 이때, ALTIBASE DB Server 의 cm protocol version 과 ALTIBASE JDBC Driver 의 CMP 가동일하면호환가능하다. $ altibase -v version 6.3.1.2.7 X86_64_LINUX_redhat_Enterprise_ES4-64bit-6.3.1.2.7- release-gcc3.4.6 (x86_64-unknown-linux-gnu) Oct 8 2014 09:16:24, binary db version 6.2.1, meta version 6.3.1, cm protocol version 7.1.1, replication protocol version 7.4.1 버전이 UP 되면서 JDBC 관련버그가 fix 되었을가능성이있으므로, 일반적으로 ALTIBASE DB Server 의버전과같거나이보다더최신의 ALTIBASE JDBC Driver 파일을사용하는것을권장한다. Spring 연동가이드 7 page of 31

Setting up JDBC Driver ALTIBASE JDBC Driver 를 setting 하는방법에대해설명한다. 프로젝트에설정하는방법 (Eclipse) Eclipse 에서해당프로젝트에 ALTIBASE JDBC Driver 를추가하는방법은다음과같다. 프로젝트 JRE System Library - Properties Installed JREs 항목중 jre 를클릭 Edit Add External JARs 를클릭하여 ALTIBASE JDBC Driver 인 Altibase.jar 를추가한다. Spring 연동가이드 8 page of 31

web application 에설정하는방법 만약웹어플리케이션을구현할경우에는 ALTIBASE JDBC Driver 를두가지방법으로설정할수있는데, 첫번째방법은각웹서버의적절한디렉토리에 Altibase.jar 파일을위치시켜, 모든웹어플리케이션에서전역적으로 ALTIBASE JDBC Driver 를사용할수있는방법이고 ( 웹서버별연동가이드문서를참고한다.), 다른방법은웹어플리케이션별로 ALTIBASE JDBC Driver 를설정하여해당웹어플리케이션에서만 ALTIBASE JDBC Driver 를사용하는것이다. 만약웹어플리케이션에 ALTIBASE JDBC Driver 를설정한다면다음의위치에 Altibase.jar 를위치시키면된다. Web_application\WEB-INF\lib 만약, Eclipse 에서 Web Project 로프로젝트를생성하였다면다음의디렉토리에 Altibase.jar 를위치시킨다. 프로젝트 \WebContent\WEB-INF\lib Spring 연동가이드 9 page of 31

DataSource 설정 Spring 에서 DB 와연동하기위해서는 bean 설정파일에 DataSource 관련 bean 을설정해야한다. ( 본문서에서 bean 설정파일의이름은 applicationcontext.xml 으로정의하였다.) DataSource 를설정하는방법중에서 Spring Framework 에서제공하는 DriverManagerDataSource 를이용하는방법, Jakarta 에서제공하는 DBCP 를이용하는방법, DB 벤더에서제공하는 ConnectionPool 을이용하는방법등이있다. 본장에서는이방법들을이용하여 ATLIBASE 와연동하는방법에대해설명한다. DriverManagerDataSource 이용 Spring Framework 에서제공하는 DriverManagerDataSource 클래스를이용하여 DB 와연동할경우에는 bean 설정파일에서 datasource bean 을설정할때 class 속성값을 org.springframework.jdbc.datasource.drivermanagerdatasource 로지정하면된다. 이때 datasource bean 에 DB 와연동하기위한여러가지 property 들을정의할수있는데, 다음과같은 Property 들을 ALTIBASE 에맞게정의하면된다. Property driverclassname url username password 설명 ALTIBASE JDBC driver class Name ALTIBASE 와연결을위한 Connection string 정보 jdbc:altibase://ip:port_no/db_name 형태로기입 데이터베이스계정 데이터베이스패스워드 다음은예제로제공되는 DataManagerDataSourceConnection 의 acpplicationcontext.xml 파일의일부이다. 예 ) DataManagerDataSourceConnection 의 applicationcontext.xml 파일 <bean id="datasource" class="org.springframework.jdbc.datasource.drivermanagerdatasource"> <!-- JDBC Driver 클래스명설정 --> <property name="driverclassname" value="altibase.jdbc.driver.altibasedriver" /> < <!-- connection url --> <property name="url" value="jdbc:altibase://192.168.1.35:21129/mydb" /> <!-- DB 사용자계정설정 --> <property name="username" value="sys" /> <!-- DB 사용자패스워드설정 --> <property name="password" value="manager" /> Spring 연동가이드 10 page of 31

예제에포함된 DataManagerDataSourceConnection 프로젝트를실행하기위해서는 Altibase.jar, spring.jar, spring-jdbc.jar, common-loggings.jar 파일이필요하므로해당 jar 파일을추가해주어야한다. DBCP 를이용 Spring 에서 Jakarta 에서제공하는 DBCP(Jakarta Commons Database Connection Pool) API 를이용하여 ConnectionPool 기반의 DataSource 를설정할수있다. 이때사용하는 DataSource 클래스는 org.apache.commons.dbcp.basicdatasource 이다. 설정하는방법은위에서설명한 DriverManagerDataSource 클래스를이용하는것처럼 applicationcontext.xml 파일에 BasicDataSource 클래스를사용하여 datasource bean 을작성하면된다. 예 ) DBCPConnection 의 applicationcontext.xml 파일 <bean id="datasource" class="org.apache.commons.dbcp.basicdatasource"> <!-- JDBC Driver 클래스명설정 --> <property name="driverclassname" value="altibase.jdbc.driver.altibasedriver" /> <!-- connection url --> <property name="url" value="jdbc:altibase://192.168.1.35:21129/mydb" /> <!-- DB 사용자계정설정 --> <property name="username" value="sys" /> <!-- DB 사용자패스워드설정 --> <property name="password" value="manager" /> BasicDataSource 클래스는 ConnectionPool 을관리하기위해다양한 Property 들을제공한다. Spring 연동가이드 11 page of 31

Property driverclassname url username password 설명 ALTIBASE JDBC driver class Name ALTIBASE 와연결을위한 Connection string 정보 jdbc:altibase://ip:port_no/db_name 형태로기입 데이터베이스계정 데이터베이스패스워드 maxactive 최대 Connection 수, 0 은무제한. default 는 8 initialsize 초기 Connection 수. default 는 0 maxidle Pool 에 idle 하게유지하는최대연결수. default 는 8 maxwait validationquery defaultautocommit defaulttransactionisolation 최대연결시도시간 ( 단위 : millisec) -1 은무한대기 Default 는무한대기 연결의 validation 을체크하기위해사용하는 SQL 문반드시최소한 1 개이상의 row 가 return 되는 select 문으로지정 ex) select 1 from dual autocommit 모드를설정. default 는 true Transaction Isolation level 을설정 NONE, REPEATABLE_READ, SERIALIZABLE 의값을설정할수있고, default 는 DB 서버의 default 값을따른다. ALTIBASE 의 isolation level 은 default 로 READ COMMITTED 이다. 예제에포함된 DBCPConnection 프로젝트를실행하기위해서는 Spring 설정 library 파일이외에 Altibase.jar, common-logging.jar, common-dbcp.jar, common-pools.jar 파일이필요하다. Spring 연동가이드 12 page of 31

ALTIBASE 의 ConnectionPool 을이용 ALTIBASE 에서제공하는 ABConnectionPoolDataSource 클래스를사용하면 ALTIBASE 의 ConnectionPool 을이용할수있다. 위에서설명한다른 DataSource 처럼 applicationcontext.xml 에 ABConnectionPoolDataSource 클래스를이용하여 datasource bean 을정의하면된다. 예 ) AltibaseConnectionPool 의 applicationcontext.xml 파일 <bean id="datasource" class="altibase.jdbc.driver.altibaseconnectionpooldatasource"> <!-- connection URL 대문자주의 --> <property name="url" value="jdbc:altibase://192.168.1.35:21129/mydb"/> <!-- DB 사용자계정설정 --> <property name="user" value="sys"/> <!-- DB 사용자패스워드설정 --> <property name="password" value="manager" /> ABConnectionPoolDataSource 을이용할경우 ABConnectionPoolDataSource 내부에서자동으로 ALTIBASE JDBC Driver class 를로딩하므로 driverclassname property 를지정할필요가없다. 또한 DB 사용자계정을나타내는 property 가 username 이아니고 user 임을주의해야한다. ABConnectionPoolDataSource 클래스는 ConnectionPool 을관리하기위해다양한 property 들을제공한다. Property 설명 URL user password ALTIBASE 와연결을위한 Connection string 정보 jdbc:altibase://ip:port_no/db_name 형태로기입 데이터베이스계정 데이터베이스패스워드 maxpoolsize 최대 Connection 수. 기본값 10. minpoolsize 최소 Connection 수. 기본값 0. initialpoolsize 초기 Connection 수. 기본값 1. maxidletime propertycycle idle 대기시간 ConnectionPool 이다찼을때대기시간 (millisec) 예제에포함된 AltibaseConnectionPool 프로젝트를실행하기위해서는 Altibase.jar, spring.jar, spring-jdbc.jar, common-logging.jar 파일이필요하다. Spring 연동가이드 13 page of 31

Spring 연동가이드 14 page of 31

Additional Connection ALTIBASE 에서제공하는 FailOver 와 Multi-version ALTIBASE 연동하는방법에대해설명한다. FailOver 를이용한 Connection ALTIBASE 5.3.3 부터 FailOver 를지원하는데, FailOver 를사용하기위해서는 Connection URL 부분에 FailOver 관련속성을넣어주면된다. 다음은 FailOver 를이용하여 ALTIBASE 에연결하는예제이다. DataSource 는위에서기술한방법중 DBCP 를이용하였다. 예 ) FailOverConnection 의 applicationcontext.xml 파일 <bean id="datasource" class="org.apache.commons.dbcp.basicdatasource"> <!-- JDBC Driver 클래스명설정 --> <property name="driverclassname" value="altibase.jdbc.driver.altibasedriver" /> <property name="url" value="jdbc:altibase://192.168.1.62:21020/mydb?alternateservers=(192.168.1.146:21020) &ConnectionRetryCount=1&ConnectionRetryDelay=1&SessionFailOver=on &LoadBalance=off /> " /> <property name="username" value="test" /> <property name="password" value="test" /> Connection URL 부분에정의할수있는 FailOver 관련 property 는다음과같다. Property AlternateServer ConnectionRetryCount ConnectionRetryDelay LoadBalance SessionFailOver 설명 장애발생시접속하게될가용서버를나타내며 (IP Address1:Port1, IP Address2:Port2,...) 형식으로기술한다. 가용서버접속실패시, 접속시도반복횟수 가용서버접속실패시, 다시접속을시도하기전에대기하는시간 ( 초단위 ) on 으로설정하면최초접속시도시에기본서버와가용서버를포함하여랜덤으로선택한다. off 로설정하면최초접속시도시에기본서버에접속하고, 접속에실패하면 AlternateServer 로기술한서버에접속한다. STF(Service Time Fail-Over) 를할것인지여부를나타낸다. on : STF, off : CTF Spring 연동가이드 15 page of 31

Property 설명 CTF(Connection Time Fail-Over) 는 DBMS 접속시점에장애를인식하여장애가발생한 DBMS 대신다른가용 STF(Service Time Fail-Over) 는 DBMS 접속에성공하여노드의 DBMS 로접속하고서비스를진행한다. 서비스하는도중에장애가발생하는것으로, 다른가용노드의 DBMS 에다시접속하여세션의프로퍼티를복구한후사용자응용프로그램의업무로직을다시수행하도록하는것을의미한다. 즉장애가발생한 DBMS 에서수행된작업을다시한번수행할필요가있는경우이다. FailOver 는첨부된예제중 FailOverConnection 프로젝트를참조하면된다. FailOverConnection 프로젝트를실행하기위해서는 Spring 설정 library 파일이외에 Altibase.jar, spring-jdbc.jar, common-logging.jar 파일이필요하다. ALTIBASE 와이전버전을동시에 Connection ALTIBASE 는하나의어플리케이션에서 ALTIBASE 하위버전을동시에연결할수있다. 기존의 Altibase.jar 와구별하기위해별도로명명만바뀐 ALTIBASE 5 버전의 JDBC Altibase5.jar 가필요하다. 다음은 Altibase.jar 와 Altibase5.jar 파일을이용하여두버전의 ALTIBASE 의드라이버를로딩하는예제이다. 예 ) MultiVersionConnection 의 applicationcontext.xml 파일 <! ALTIBASE 6 버전에대한 DataSource 설정 --> <bean id="datasource1" class="org.springframework.jdbc.datasource.drivermanagerdatasource"> <!-- JDBC Driver 클래스명설정 --> <property name="driverclassname" value="altibase.jdbc.driver.altibasedriver"/> <!-- connection URL 대문자주의 --> <property name="url" value="jdbc:altibase://127.0.0.1:20300/mydb"/> <!-- DB 사용자계정설정 --> <property name="username" value="sys"/> <!-- DB 사용자패스워드설정 --> <property name="password" value="manager" /> <! ALTIBASE 6 이전버전에대한 DataSource 설정 --> <bean id="datasource2" class="org.springframework.jdbc.datasource.drivermanagerdatasource"> <!-- JDBC Driver 클래스명설정 --> <property name="driverclassname" value="altibase.jdbc.driver.altibasedriver"/> <!-- connection URL 대문자주의 --> <property name="url" value="jdbc:altibase://192.168.1.35:21129/mydb"/> <!-- DB 사용자계정설정 --> <property name="username" value="sys"/> Spring 연동가이드 16 page of 31

<!-- DB 사용자패스워드설정 --> <property name="password" value="manager" /> <!-- DAO 클래스의 bean 설정 --> <bean id="accountdao1" class="com.altibase.banking.accountdao"> <property name="datasource" ref="datasource1"/> <!-- DAO 클래스의 bean 설정 --> <bean id="accountdao2" class="com.altibase.banking.accountdao"> <property name="datasource" ref="datasource2"/> MultiVersionConnection 의 AccountApp.java 파일 Resource resource = new ClassPathResource("applicationContext.xml"); BeanFactory factory = new XmlBeanFactory(resource); AccountDao accountdao1 = (AccountDao)factory.getBean("accountDao1"); AccountDao accountdao2 = (AccountDao)factory.getBean("accountDao2"); 예제에포함된 MultiVersionConnection 프로젝트를실행하기위해서는기존에사용했던 jar 파일뿐만아니라, Altibase.jar 와 Altibase5.jar 파일이필요하다. 이파일들은 ALTIBASE 가설치된디렉토리 ($ALTIBASE_HOME) 의 lib 디렉토리안에존재하는데 ALTIBASE 5 버전의 Altibase5.jar 파일, 그이전버전의 Altibase.jar 파일을사용하면된다. Spring 연동가이드 17 page of 31

트랜잭션관리 Spring Framework 를이용하면다양한방법으로트랜잭션을처리할수있다. 먼저, 트랜잭션관리자 (TransactionManager) 를 bean 설정파일에지정해주고, 트랜잭션처리를해주면된다. 트랜잭션처리는필요에따라소스코드내에서직접프로그램을구현할수있고, 또다른방법으로 bean 설정파일에서선언적으로처리할수있다. Spring Framework 는데이터베이스연동기술에따라여러 PlatformTransactionManager 인터페이스의구현클래스를제공하는데이클래스들을 TransactionManager 로지정하면된다. 예를들어, 로컬트랜잭션을처리하기위해서 DataSourceTransactionManager 클래스를 TransactionManager 로지정하고, 분산트랜잭션을처리하기위해서는 JtaTransactionManager 클래스를 TransactionManager 로지정하면된다. TransactionManager 를지정한후트랜잭션을선언적으로처리하기위해서는 bean 설정파일에트랜잭션을처리하는 bean 을정의하면된다. 이때, 이 bean 에 TransactionProxyFactoryBean 클래스를지정하여각메소드이름별로트랜잭션을처리하는방법을지정해주면된다. 본문서에서는이클래스들을 TransactionManager 를설정하는방법과 bean 파일을이용해서선언적으로트랜잭션을처리하는방법에대해살펴본다. DataSourceTransactionManager 설정 PlatformTransactionManager 구현클래스중 DataSourceTransactionManager 클래스를이용하여 TransactionManager 를지정할수있다. bean 설정파일 (applicationconext.xml) 에 transactionmanager bean 에 org.springframework.jdbc.datasource.datasourcetransactionmanager 클래스를지정해주면된다. 이후, 선언적으로트랜잭션을처리할때트랜잭션을처리하는 bean의 property중 transactionmanager에위해서정의한 transactionmanager bean을지정해주면된다. 서 예 ) DataSourceTransactionManager 의 applicationcontext.xml 파일 <bean id="transactionmanager" class="org.springframework.jdbc.datasource.datasourcetransactionmanager"> <property name="datasource" ref="datasource"/> <bean id="txproxytemplate" abstract="true" class="org.springframework.transaction.interceptor.transactionproxyfactorybean"> <property name="transactionmanager" ref="transactionmanager" /> <property name="transactionattributes"> <props> <prop key="get*">propagation_required, readonly </prop> <prop key="add*">propagation_required</prop> </props> </property> <bean id="accountservice" parent="txproxytemplate"> <property name="target"> <bean class="com.altibase.banking.accountservice"> <property name="accountdao" ref="accountdao"/> Spring 연동가이드 18 page of 31

</property> 트랜잭션을처리하기위해서는트랜잭션을관리 (TransactionManager) 하는방법뿐만아니라, 트랜잭션을처리하는방법도기술해야하는데위의예제는트랜잭션처리방법중 springframework.transaction.interceptor.transactionproxyfactorybean 클래스를이용하여 bean 설정파일 (applicationconext.xml) 에선언적으로트랜잭션을처리하는방법으로작성되었다.( 해당내용은아래에자세히설명한다.) TransactionProxyFactoryBean 을이용한선언적트랜잭션처리 TransactionProxyFactoryBean 클래스는트랜잭션을처리하기위한여러속성들을제공하는클래스이다. bean 설정파일 (applicationcontext.xml) 에 TransactionProxyFactoryBean 클래스의 bean을설정해주고, 트랜잭션을처리하는방법을각메소드별로정의하여선언적으로트랜잭션을처리할수있다. 이트랜잭션처리를위한 bean의 <property> 에지정하는트랜잭션관련속성들은다음과같다. 1. target 프로퍼티를통해트랜잭션을적용할대상객체를설정한다. 2. transactionmanager 위에서정의한 TransactionManager 를설정한다. 3. transactionattrubutes 트랜잭션속성을설정할때사용되는 Properties 객체를설정한다. 이때트랜잭션을적용할메소드단위로 <prop> 태그를이용하여트랜잭션속성을정의한다. <prop> 의태그값은다음과같은형식으로지정한다. PROPAGATION, ISOLATION_NAME, readonly, timeout, +Exception, -Exception <prop> 태그값의각항목에대한설명은다음과같다. 항목 설명 PROPAGATION 트랜잭션전파규칙을명시. 필수항목. PROPAGATION_REQUIRED( 기본값 ), PROPAGATION_REQUIRES_NEW, PROPAGATION_MANDATORY, PROPAGATION_SUPPORTS, PROPAGATION_NOT_SUPPORTED, PROPAGATION_NEVER, PROPAGATION_NESTED ISOLATION_NAME ISOLATION 속성을설정. 선택항목. DEFAULT, READ_COMMITTED, Spring 연동가이드 19 page of 31

READ_UNCOMMITTED, REPETABLE_READ, SERIALIZABLE. ALTIBASE 는이중 READ_COMMITTED, SERIALIZABLE, REPETABLE_READ 만지원한다. readonly readonly 가사용되면트랜잭션을읽기전용으로설정 timeout 트랜잭션의타임아웃시간을초단위로설정한다. +,-Exception ROLLBACK 규칙을설정. +Exception 은해당 Exception 이발생하더라도 COMMIT 을수행하고 Exception 은해당 Exception 이발생하면 ROLLBACK 을수행한다. 다음은 TransactionProxyFactoryBean 클래스를이용하여트랜잭션속성들을정의한 bean 설정파일 (applicaioncontext.xml) 이다. 예 ) DataSourceTransactionManager 의 applicationcontext.xml 파일 <bean id="transactionmanager" class="org.springframework.jdbc.datasource.datasourcetransactionmanager"> <property name="datasource" ref="datasource"/> <bean id="txproxytemplate" abstract="true" class="org.springframework.transaction.interceptor.transactionproxyfactorybean"> <property name="transactionmanager" ref="transactionmanager" /> <property name="transactionattributes"> <props> <prop key="get*">propagation_required, readonly </prop> <prop key="add*">propagation_required</prop> </props> </property> <bean id="accountservice" parent="txproxytemplate"> <property name="target"> <bean class="com.altibase.banking.accountservice"> <property name="accountdao" ref="accountdao"/> </property> 분산트랜잭션처리 Spring 에서 JOTM(Java Open Transaction Manager) 을이용하면분산트랜잭션을처리할수있다. 이때 JOTM 과연동하기위해서는먼저, Spring 에서제공하는 JotmFactoryBean 을등록해야한다. 그리고 TransactionManager 로는분산트랜잭션을제공하는 JtaTransactionManager 를사용하면된다. Spring 연동가이드 20 page of 31

뿐만아니라, 분산트랜잭션을처리하기위해서는분산트랜잭션을제공하는 DataSource 를사용해야하는데, JOTM 에서제공하는 org.enhydra.jdbc.pool.standardxapooldatasource 를사용할수도있지만, 본문서에서는 ALTIBASE 에서제공하는 Altibase.jdbc.driver. ABXADataSource 를이용하여분산트랜잭션을처리하는방법에대해설명한다. 다음은 org.springframework.transaction.jta.jtatransactionmanager 와 Altibase.jdbc.driver.AltibaseXADataSource 를이용하여분산트랜잭션을처리하는예제이다. 1. AltibaseXADataSource 를이용하여 DataSource 를지정 2. JotmFactoryBean 을지정 3. TransactionManager 로 JtaTransactionManager 지정 4. TransactionProxyFactoryBean 클래스를이용하여선언적트랜잭션처리하는 bean 을지정 예 ) XAConnection 의 applicationcontext.xml 파일 <bean id="datasource1" class="altibase.jdbc.driver.altibasexadatasource"> <!-- connection url--> <property name="url" value="jdbc:altibase://192.168.1.35:21129/mydb"/> <!-- DB 사용자계정설정 --> <property name="user" value="sys"/> <!-- DB 사용자패스워드설정 --> <property name="password" value="manager" /> <bean id="datasource2" class="altibase.jdbc.driver. AltibaseXADataSource "> <!-- connection url--> <property name="url" value="jdbc:altibase://127.0.0.1:20300/mydb"/> <!-- DB 사용자계정설정 --> <property name="user" value="sys"/> <!-- DB 사용자패스워드설정 --> <property name="password" value="manager" /> <bean id="accountdao1" class="com.altibase.banking.accountdao"> <property name="datasource" ref="datasource1"/> <bean id="accountdao2" class="com.altibase.banking.accountdao"> <property name="datasource" ref="datasource2"/> <bean id="jotm" class="org.springframework.transaction.jta.jotmfactorybean"/> <bean id="transactionmanager" class="org.springframework.transaction.jta.jtatransactionmanager"> <property name="usertransaction" ref="jotm"/> <bean id="txproxytemplate" abstract="true" class="org.springframework.transaction.interceptor.transactionproxyfactorybean"> <property name="transactionmanager" ref="transactionmanager" /> <property name="transactionattributes"> <props> Spring 연동가이드 21 page of 31

<prop key="get*">propagation_required, readonly</prop> <prop key="add*">propagation_required</prop> </props> </property> <bean id="accountservice" parent="txproxytemplate"> <property name="target"> <bean class="com.altibase.banking.accountservice"> <property name="accountdao1" ref="accountdao1"/> <property name="accountdao2" ref="accountdao2"/> </property> 예제에포함되어있는 XAConnection 프로젝트를실행하기위해서는기존에추가했던 jar 파일이외에 JOTM 에대한 jar 파일들을더추가해야한다. JOTM 에관련된파일들은 http://forge.ow2.org/projects/jotm/ 사이트에서다운로드받을수있다. 다운로드후압축을풀면 jar 파일들이있는데이중 carol-2.0.5.jar, connector-1_5.jar, howl-0.1.11.jar, jotm.jar, jta-spec1_0_1.jar, xapool-1.5.0.jar 파일을프로젝트에추가해주면된다. ( 위의 jar 파일의이름은다운로드받은 JOTM 버전에따라이름이다를수있다.) 그외 cglib-nodep-2.1.3.jar 파일이별도로필요하다. Spring 연동가이드 22 page of 31

Spring 연동시주의사항 Spring 에서 ALTIBASE 에연동할경우주의해야할사항에대해설명한다. LOB 데이터처리 ALTIBASE 에서 LOB 데이터를처리하기위해서는반드시 autocommit 모드를 false 로바꾼후명시적으로트랜잭션을관리해줘야한다. 따라서 Spring 에서 LOB 을처리하기위해서는반드시 TransactionManager bean 을명시해줘야한다. 또한선언적트랜잭션을사용하는경우에는 propagation 을 PROPAGATION_REQUIRED, PROPAGATION_REQUIRES_NEW, PROPAGATION_NESTED 중하나로지정해줘야한다. 만약 TransactionManager 를지정해주지않았거나, 또는선언적트랜잭션을사용하는데 propagation 을위에설명한값이외의다른값으로지정했을경우에는 LOB 데이터조회시 null 값이리턴되거나, java.sql.sqlexception: [0]:LobLocator can not span the transaction 101858625. 과같은에러가발생한다. 그리고 LOB 데이터를입력시에도 java.sql.sqlexception: [0]:LobLocator can not span the transaction 101858625. 에러가발생하게된다. 예 ) LobConnection 의 applicationcontext.xml 파일 <bean id="transactionmanager" class="org.springframework.jdbc.datasource.datasourcetransactionmanager"> <property name="datasource" ref="datasource"/> <bean id="txproxytemplate" abstract="true" class="org.springframework.transaction.interceptor.transactionproxyfactorybean"> <property name="transactionmanager" ref="transactionmanager" /> <property name="transactionattributes"> <props> <prop key="get*">propagation_required</prop> <prop key="add*">propagation_ REQUIRED </prop> </props> </property> <bean id="lobsampleservice" parent="txproxytemplate"> <property name="target"> <bean class="com.altibase.lob.lobsampleservice"> <property name="lobsampledao" ref="lobsampledao"/> </property> Spring 연동가이드 23 page of 31

부록 sample 예제를바탕으로 Spring 을사용하는방법에대해좀더자세하게설명한다. 부록에서설명하는 sample 프로젝트의이름은 HelloSpring 이며 Eclipse 에서작성하였다. HelloSpring 프로젝트는인사말메시지를 print 하는간단한프로그램으로 Spring 컨테이너 (BeanFactory) 로부터 bean 설정파일 (applicationcontext.xml) 에정의되어있는 bean(greetingservice) 을가져와 bean 에정의되어있는인사말메시지를 print 한다. HelloSpring 구현 1. HelloSpring 프로젝트생성 1-1. 메뉴 File Java Project 클릭 1-2. Project name : 에 HelloSpring 입력 1-3. Finish 버튼을클릭 2. sample 자바파일구현 다음의클래스및인터페이스를구현한다. 2-1. GreetingService 인터페이스 Spring 연동가이드 24 page of 31

서비스를정의해놓은인터페이스이다. HelloSpring 프로젝트의 src 디렉토리에서마우스오른쪽버튼클릭하여 New Interface 를클릭한다. Package: 에 com.altibase.hello 를입력하고 Name: 에 GreetingService 를입력한다. GreeingService.java 파일이생성되면다음과같이소스를작성한다. package com.altibase.hello; public interface GreetingService { public void saygreeting(); } 2-2. GreetingServiceImp 클래스 GreetingServie 인터페이스를구현한클래스이다. HelloSpring 프로젝트의 src 디렉토리에서마우스오른쪽버튼클릭하여 New Class 를클릭한다. Package: 에 com.altibase.hello 를입력하고 Name: 에 GreetingServiceImp 를입력한다. Interfaces: 옆에 Add 버튼을클릭하여 GreetingService 를입력한후 OK 버튼을클릭한다. Spring 연동가이드 25 page of 31

GreeingServiceImp.java 파일이생성되면다음과같이소스를작성한다. package com.altibase.hello; public class GreetingServiceImp implements GreetingService{ private String greeting; public GreetingServiceImp(){ } } public GreetingServiceImp(String greeting){ this.greeting = greeting; } public void saygreeting() { System.out.println(greeting); } public void setgreeting(string greeting){ this.greeting = greeting; } 3. bean 설정파일정의 bean 설정파일 (applicationcontext.xml) 에 GreetingServiceImp 에대한 bean 을정의한다. Spring 연동가이드 26 page of 31

HelloSpring 프로젝트에서마우스오른쪽버튼클릭하여 New File 을클릭한다. File name: 에 applicationcontext.xml 을작성한다. applicationcontext.xml 파일에다음과같이작성한다. <?xml version="1.0" encoding="utf-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemalocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd"> <bean id="greetingservice" class="com.altibase.hello.greetingserviceimp"> <property name="greeting"> <value>hello</value> </property> </beans> Spring 연동가이드 27 page of 31

greetingservice 는 bean 의이름으로 java 프로그램에서해당이름으로 bean 가져와사용할수있다. class 에는서비스를담당하는 GreetingServiceImp 클래스의 full name 으로명시해주고, property 에 GreetingServiceImp 에정의되어있는멤버변수 greeting 에 setting 될메시지를넣어주면된다. 4. HelloApp 클래스정의 main 클래스로 BeanFactory 로부터 GreetingServiceImp 가정의되어있는 bean 을가져와서비스메소드 (saygreeting()) 를호출한다. HelloSpring 프로젝트의 src 디렉토리에서마우스오른쪽버튼클릭하여 New Class 를클릭한다. Package: 부분은공락으로나두고 Name: 에 HelloApp 를입력한다. HelloApp.java 파일이생성되면다음과같이소스를작성한다. import org.springframework.context.applicationcontext; import org.springframework.context.support.classpathxmlapplicationcontext; import com.altibase.hello.greetingservice; public class HelloApp { /** * @param args */ Spring 연동가이드 28 page of 31

public static void main(string[] args) { @SuppressWarnings("resource") ApplicationContext factory = new ClassPathXmlApplicationContext("applicationContext.xml"); GreetingService greetingservice = (GreetingService)factory.getBean("greetingService"); greetingservice.saygreeting(); } } 위의소스 applicationconext.xml 은위에정의한 bean 설정파일이고, greetingservice 는 applicationcontext.xml 에정의된 GreetingServiceImp 클래스에대한 bean 이름을나타낸다. 5. 관련 jar 파일들추가 Spring 관련 jar 파일을 HelloSpring 에추가한다. HelloSpring 프로젝트에서마우스오른쪽버튼클릭하여 Properties 를클릭 Java Build Path Libraries 에서 Add External JARS 를클릭하여 Spring Framework 의 jar 파일중 spring.jar 파일과 common-logging.jar 파일을추가한다. 해당파일의위치는 DriverManagerDataSource 설명부분을참조한다. 6. HelloSpring 프로젝트를실행한다. HelloSpring 프로젝트를클릭한후메뉴에서 Run 을실행하거나 Run 실행단추를클릭한다. Console 창에 Hello 문자열이 print 된다. Spring 연동가이드 29 page of 31

Spring 연동가이드 30 page of 31

알티베이스 서울특별시구로구구로 3 동 182-13 대륭포스트 2 차 1008 호 02-2082-1000 http://www.altibase.com 대전사무소대전광역시서구둔산동 921 주은리더스텔 901 호 042-489-0330 기술지원본부서울특별시구로구구로 3 동 182-13 대륭포스트 2 차 908 호 02-2082-1000 기술지원센터 02-2082-1114 http://support.altibase.com Copyright c 2000~2014 ALTIBASE Corporation. All Rights Reserved. 이문서는정보제공을목적으로제공되며, 사전에예고없이변경될수있습니다. 이문서는오류가있을수있으며, 상업적또는특정목적에부합하는명시적, 묵시적인책임이일체없습니다. 이문서에포함된 ALTIBASE 제품의특징이나기능의개발, 발표등의시기는 ALTIBASE 재량입니다. ALTIBASE 는이문서에대하여관련된특허권, 상표권, 저작권또는기타지적재산권을보유할수있습니다. Spring 연동가이드 31 page of 31