JEUS

Similar documents
JEUS

Tmax

Microsoft Word - AnyLink Introduction v3.2.3.doc

개발및운영 Tibero DB Link (Tibero To Oracle) - Local 방식

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

Tibero

인디쓔피-IOM핸돜벁닄큐1014pdf, page Preflight ( IOM핸돜벁닄큐__1014 )

API 매뉴얼

마리오와 소닉 리우 올림픽™

untitled

[JEUS 7] eclipse plug-in 연동 1. 개요 Eclipse 와 JEUS 7 연동시필요한 plug-in 제공및환경설정에관한가이드제공하여 Eclipse 에서 JEUS 7 기동및 종료테스트할수있는방법을기술하였습니다. 2. Plug-in 설치 2.1 [Step

DBMS & SQL Server Installation Database Laboratory

개발및운영 Eclipse 를이용한 ANT 활용방법

untitled

Chap7.PDF

개발및운영 Tibero Perl 연동

Spring Boot/JDBC JdbcTemplate/CRUD 예제

Intro to Servlet, EJB, JSP, WS

No Slide Title

#KM560

FileMaker 15 ODBC 및 JDBC 설명서

튜닝및모니터링 HP JVM 튜닝옵션

untitled

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

untitled

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

Tibero

FileMaker ODBC 및 JDBC 가이드

Hardware Manual TSP100

untitled

#KM-235(110222)

#KM-340BL

FY2005 LIG

Chapter 1


윈백및업그레이드 Tibero Flashback 가이드

#DPK5(PB)(9.8.19)

#KM-250(PB)

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

Interstage5 SOAP서비스 설정 가이드

untitled

untitled

목차 1. 노드매니저종류 Java Type SSH Type 노드설정파일및로깅 nodes.xml jeusnm.properties <servername>.properties...

2012-민간네트워크-05_중국

JEUS 소개

10.ppt

uFOCS

APOGEE Insight_KR_Base_3P11

DocsPin_Korean.pages

InsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins

JEUS

Microsoft PowerPoint - 10Àå.ppt

목차 JEUS EJB Session Bean가이드 stateful session bean stateful sample 가이드 sample source 결과확인 http session에

ez-shv manual

Linux 권장커널파라미터 1. 커널파라미터별설명및설정방법 1.1 nofile ( max number of open files ) 설명 : 지원되는열린파일수를지정합니다. 기본설정이보통대부분의응용프로그램에대해충분합니다. 이매개 변수에설정된값이너무낮으면파일열기오류, 메모리

Copyrights and Trademarks Autodesk SketchBook Mobile (2.0.2) 2013 Autodesk, Inc. All Rights Reserved. Except as otherwise permitted by Autodesk, Inc.,

Tablespace On-Offline 테이블스페이스 온라인/오프라인

문서 템플릿

설치및환경설정 JEUS Thread State Notify 설정

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

#KLZ-371(PB)

쉽게 풀어쓴 C 프로그래밊


강의 개요

목차 1. 개요 개요 연동테스트홖경 PowerBuilder Connection Tibero ODBC Driver 설정 PowerBuilder Connection 설정 Tiber

Windows 8에서 BioStar 1 설치하기

API 매뉴얼

Copyright 2012, Oracle and/or its affiliates. All rights reserved.,.,,,,,,,,,,,,.,...,. U.S. GOVERNMENT END USERS. Oracle programs, including any oper

리눅스설치가이드 3. 3Rabbitz Book 을리눅스에서설치하기위한절차는다음과같습니다. 설치에대한예시는우분투서버 기준으로진행됩니다. 1. Java Development Kit (JDK) 또는 Java Runtime Environment (JRE) 를설치합니다. 2.

삼성955_965_09

[Brochure] KOR_TunA

PowerPoint Template

MySQL-Ch10

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

JVM 메모리구조

초보자를 위한 ADO 21일 완성

설치및환경설정 Tibero tbprobe 사용법과원격지포트체크

슬라이드 제목 없음

rv 브로슈어 국문

09 강제근로의 금지 폭행의 금지 공민권 행사의 보장 중간착취의 금지 41 - 대판 , 2006도7660 [근로기준법위반] (쌍용자동차 취업알선 사례) 11 균등대우의 원칙 43 - 대판 , 2002도3883 [남녀고용평등법위

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

교육2 ? 그림

Web Application Hosting in the AWS Cloud Contents 개요 가용성과 확장성이 높은 웹 호스팅은 복잡하고 비용이 많이 드는 사업이 될 수 있습니다. 전통적인 웹 확장 아키텍처는 높은 수준의 안정성을 보장하기 위해 복잡한 솔루션으로 구현

Microsoft Word _whitepaper_latency_throughput_v1.0.1_for_

I. 회사의 개요 1. 회사의 개요 1) 회사의 법적, 상업적 명칭 당사의 명칭은 "주식회사 한글과컴퓨터"라고 표기합니다. 또한 영문으로는 "HANCOM INC." 라 표기합니다. 단, 약식으로 표기할 경우에는 (주)한글과컴퓨터라 고 표기합니다. 2) 설립일자 및 존속

Spotlight on Oracle V10.x 트라이얼프로그램설치가이드 DELL SOFTWARE KOREA

DIY 챗봇 - LangCon

튜닝및모니터링 OS 별 TCP Recommend Parameter for WebtoB/JEUS

Cache_cny.ppt [읽기 전용]

PowerPoint 프레젠테이션

MS-SQL SERVER 대비 기능

Corporate PPT Template

슬라이드 1

..,. Job Flow,. PC,.., (Drag & Drop),.,. PC,, Windows PC Mac,.,.,. NAS(Network Attached Storage),,,., Amazon Web Services*.,, (redundancy), SSL.,. * A

C# Programming Guide - Types

1217 WebTrafMon II

토익S-채용사례리플렛0404

PowerPoint 프레젠테이션

Orcad Capture 9.x

Microsoft PowerPoint - 3장-MS SQL Server.ppt [호환 모드]

Transcription:

JEUS JPA 안내서 JEUS v7.0 Fix#1 Copyright 2013 TmaxSoft Co., Ltd. All Rights Reserved.

Copyright Notice Copyright 2013 TmaxSoft Co., Ltd. All Rights Reserved. 대한민국경기도성남시분당구서현동 272-6 우 ) 463-824 Restricted Rights Legend All TmaxSoft Software (JEUS ) and documents are protected by copyright laws and international convention. TmaxSoft software and documents are made available under the terms of the TmaxSoft License Agreement and may only be used or copied in accordance with the terms of this agreement. No part of this document may be transmitted, copied, deployed, or reproduced in any form or by any means, electronic, mechanical, or optical, without the prior written consent of TmaxSoft Co., Ltd. 이소프트웨어 (JEUS ) 사용설명서의내용과프로그램은저작권법과국제조약에의해서보호받고있습니다. 사용설명서의내용과여기에설명된프로그램은 TmaxSoft Co., Ltd. 와의사용권계약하에서만사용이가능하며, 사용권계약을준수하는경우에만사용또는복제할수있습니다. 이사용설명서의전부또는일부분을 TmaxSoft의사전서면동의없이전자, 기계, 녹음등의수단을사용하여전송, 복제, 배포, 2차적저작물작성등의행위를하여서는안됩니다. Trademarks JEUS is registered trademark of TmaxSoft Co., Ltd. Other products, titles or services may be registered trademarks of their respective companies. JEUS 는 TmaxSoft Co., Ltd. 의등록상표입니다. 기타모든제품들과회사이름은각각해당소유주의상표로서참조용으로만사용됩니다. Open Source Software Notice Some modules or files of this product are subject to the terms of the following licenses. : APACHE2.0, CDDL1.0, EDL1.0, OPEN SYMPHONY SOFTWARE1.1, TRILEAD-SSH2, Bouncy Castle, BSD, MIT, SIL OPEN FONT1.1 Detailed Information related to the license can be found in the following directory : ${INSTALL_PATH}/lib/licenses 본제품의일부파일또는모듈은다음의라이선스를준수합니다. : APACHE2.0, CDDL1.0, EDL1.0, OPEN SYM PHONY SOFTWARE1.1, TRILEAD-SSH2, Bouncy Castle, BSD, MIT, SIL OPEN FONT1.1 관련상세한정보는제품의다음의디렉터리에기재된사항을참고해주십시오. : ${INSTALL_PATH}/lib/licenses 안내서정보안내서제목 : JEUS JPA 안내서발행일 : 2013-04-30 소프트웨어버전 : JEUS v7.0 Fix#1 안내서버전 : v2.1.2

내용목차 안내서에대하여... ix 제1장 소개... 1 제2장 프로바이더설정... 3 2.1. 데이터베이스설정... 3 2.1.1. 사용환경별설정... 3 2.1.2. 데이터베이스타입설정... 5 2.1.3. 스키마자동생성설정... 6 2.2. Caching... 8 2.3. Query 힌트... 10 2.4. Logging 설정... 11 제3장 프로바이더변경... 13 3.1. Persistence 프로바이더변경... 13 3.2. 사용가능한 Persistence 프로바이더... 14 색인... 15 JEUS iii

표목차 [ 표 2.1] Java SE 모드데이터베이스프로퍼티... 4 [ 표 2.2] eclipselink.target-database 프로퍼티... 5 [ 표 2.3] Java Type to SQL Type Mappings... 7 JEUS v

예목차 [ 예 2.1] Java EE 모드에서데이터베이스설정예... 4 [ 예 2.2] Java SE 모드에서데이터베이스설정예... 4 [ 예 2.3] 데이터베이스타입설정예... 5 [ 예 2.4] 스키마자동생성설정예... 6 [ 예 2.5] Caching 방식설정예... 8 [ 예 2.6] Query 힌트사용예제... 10 [ 예 2.7] Logging 설정예... 11 [ 예 3.1] Persistence 프로바이더변경예... 13 JEUS vii

안내서에대하여 안내서의대상 본안내서는 JEUS 에서 Java Persistence API(JPA) 를사용하여개발하고자하는개발자를대상으로하고 있다. 안내서의전제조건 본안내서를원활하게이해하기위해서는다음과같은사항을미리알고있어야한다. JEUS 소개 JEUS 설치및시작하기 안내서의제한조건 본안내서에서는 Java EE 표준에대한것은설명하지않고, JEUS 관련내용만설명한다. 따라서 Java EE 표준에대한자세한내용은해당자료를참고한다. 안내서구성 본안내서는총 3개의장으로구성되어있다. 제1장소개 JPA와 JEUS에대해설명한다. 제2장프로바이더설정 JEUS의기본프로바이더의설정에대해설명한다. 제3장프로바이더변경 JEUS의기본프로바이더를변경하는방법에대해설명한다. 안내서에대하여 ix

안내서규약 표기 <<AaBbCc123>> <Ctrl>+C [Button] 진하게 " "( 따옴표 ) ' 입력항목 ' 하이퍼링크 > +---- ---- 참고주의 [ 그림 1.1] [ 표 1.1] AaBbCc123 의미프로그램소스코드의파일명 Ctrl과 C를동시에누름 GUI의버튼또는메뉴이름강조다른관련안내서또는안내서내의다른장및절언급화면 UI에서입력항목에대한설명메일계정, 웹사이트메뉴의진행순서하위디렉터리또는파일있음하위디렉터리또는파일없음참고또는주의사항주의할사항그림이름표이름 Java 코드, XML 문서 [ command argument ] < xyz > 옵션파라미터 < 와 > 사이의내용이실제값으로변경됨선택사항. 예 ) A B: A나 B 중하나파라미터등이반복되어서나옴 x JEUS JPA 안내서

시스템사용환경 본안내서의모든예제와환경구성은 UNIX의스타일에준하여작성되어 Microsoft Windows ( 이하 Windows) 와같이다른환경에서작업하는경우몇가지사항을고려해야한다. 예를들어경로구분자의경우 UNIX 스타일인 / 를 Windows 스타일인 \ 로바꿔서사용한다. 또한환경변수도 Windows 스타일로변경해서사용하면된다. 문서의내용은 Java 표준을고려해서작성했기때문에대부분의내용은동일하게적용된다. 관련안내서 안내서 JEUS 소개 JEUS 설치및시작하기 JEUS Server 안내서 설명 JEUS 서버에대한전반적인소개와 JEUS의아키텍처를포함하여각구성요소들에대해설명한안내서이다. JEUS에대한소개와설치및시작방법에대해기술한안내서이다. JEUS 시스템과서버의개요와시스템관리를위한안내서이다. 참고자료 Pro EJB 3 Java Persistence API, Mike Keith and Merrick Schincariol, Apress Enterprise JavaBeans 3.0 5th ed., Bill Burke and Richard Monson-Haefel, O Reilly Pro JPA 2 Mastering the Java Persistence API, Mike Keith and Merrick Schincariol, Apress 안내서에대하여 xi

연락처 Korea TmaxSoft Co., Ltd 272-6, Seohyeon-dong, Bundang-gu, Seongnam-si, Gyeonggi-do, 463-824 South Korea Tel: +82-31-8018-1000 Fax: +82-31-8018-1115 Email: info@tmax.co.kr Web (Korean): http://www.tmax.co.kr 기술지원 : http://technet.tmaxsoft.com USA TmaxSoft, Inc. 560 Sylvan Avenue Englewood Cliffs, NJ 07632 U.S.A Tel: +1-201-567-8266 Fax: +1-201-567-7339 Email: info@tmaxsoft.com Web (English): http://www.tmaxsoft.com Japan TmaxSoft Japan Co., Ltd. 5F Sanko Bldg, 3-12-16 Mita, Minato-Ku, Tokyo, 108-0073 Japan Tel: +81-3-5765-2550 Fax: +81-3-5765-2567 Email: info@tmaxsoft.co.jp Web (Japanese): http://www.tmaxsoft.co.jp xii JEUS JPA 안내서

China TmaxSoft China Co., Ltd. Beijing Silver Tower, RM 1508, 2# North Rd Dong San Huan, Chaoyang District, Beijing, China, 100027 China Tel: +86-10-6410-6145~8 Fax: +86-10-6410-6144 Email: info.cn@tmaxsoft.com Web (Chinese): http://www.tmaxsoft.com.cn 안내서에대하여 xiii

제 1 장소개 Java Persistence API( 이하 JPA) 는관계형데이터베이스에접근하기위한표준 ORM 기술을제공하며, 기존에 EJB에서제공되던 CMP Entity Bean을대체하는기술이다. JEUS는 JPA 스펙의기능을모두지원한다. JPA는 JSR 317에서 JPA 2.0 스펙으로정의되어있으며, EJB 컨테이너에의존하지않고 EJB, 웹모듈및 Java SE Standalone 클라이언트에서모두사용이가능하다. 또한 JPA는사용자가원하는 Persistence 프로바이더 (Provider) 구현체를선택해서사용할수있다. JEUS 에서는기본적으로 Eclipse Persistence Services Project의 EclipseLink 구현체를제공한다. 필요에따라다른구현체를선택해서사용할수있다. 이에대한자세한사항은 3.1. Persistence 프로바이더변경 을참고한다. 실제 JPA를사용할때는 JPA 스펙에서제공하는기본적인 API나설정과프로바이더의특성을함께고려해야한다. 특히, Caching과같은것은중요한특성으로이를모르고애플리케이션을개발하면원하는결과를얻지못할수도있다. 따라서 JPA를환경에따라적절하게구성해서개발해야한다. 이러한것들은앞으로다양한패턴을통해소개될것이므로 EclipseLink JPA 사이트를계속참조하기를권장한다. EclipseLink http://www.eclipse.org/eclipselink/ 본안내서는 JEUS 의기본프로바이더인 EclipseLink 를 JEUS 에서사용하는데필요한설정에대해서만 설명한다. JPA 기술자체나프로그래밍방법에대해서는다루고있지않기때문에이에대해서는본안내 서의참고자료부분을참고한다. 제 1 장소개 1

제 2 장프로바이더설정 본장에서는 JEUS 의기본프로바이더인 EclipseLink 에대한설정을설명한다. 이러한설정은 JPA 스펙에 서정의되지않는기능을구현하기위해필요한부분으로, 각애플리케이션에맞게정확하게설정되어야 한다. 2.1. 데이터베이스설정 사용환경, 데이터베이스타입에따른데이터베이스설정과자동으로데이터베이스스키마를생성하는 설정에대해설명한다. 2.1.1. 사용환경별설정 사용환경에따라데이터베이스의설정방법이달라진다. Java EE 환경 Java EE 환경 ( 또는모드 ) 은 JEUS 의 Managed Server( 이하 MS) 위에서웹컨테이너, EJB 컨테이너, 애플 리케이션클라이언트컨테이너를의미한다. 참고좀더정확하게는각컨테이너에서컨트롤하는 Thread를의미한다. 예를들어웹엔진에설정하는 Web Thread Pool의 Thread이다. 만약애플리케이션이직접생성한 Thread Pool의 Thread처럼컨테이너가관리하지않는 Thread 상에서는 Java SE 환경과똑같다. 사용할데이터베이스대상에대한설정은 persistence.xml Descriptor에설정한다. 사용할트랜잭션의종류에따라서 <jta-data-source> 와 <non-jta-data-source> 값을설정한다. 글로벌트랜잭션을사용하는경우 <transaction-type> 의값을 'JTA' 로설정한다. <jta-data-source> 에해당데이터소스의 JNDI 이름을설정한다. 로컬트랜잭션을사용하는경우 <transaction-type> 의값을 'RESOURCE_LOCAL' 로설정한다. <non-jta-data-source> 에해당데이터소스의 JNDI 이름을설정한다. 제 2 장프로바이더설정 3

[ 예 2.1] Java EE 모드에서데이터베이스설정예 <?xml version="1.0" encoding="utf-8"?> <persistence xmlns="http://java.sun.com/xml/ns/persistence"> <persistence-unit name="em" transaction-type="jta"> <jta-data-source>jdbc/mydb</jta-data-source> </persistence-unit> </persistence> 참고 1. Java EE 환경에서는 <transaction-type> 값을지정하지않을경우기본적으로 JTA 트랜잭션으로설정한다. 2. JEUS에서 DB 데이터소스를설정하는방법은 JEUS Server 안내서 의 제6장 DB Connection Pool과 JDBC 를참고한다. Java SE 환경 Java SE 환경 ( 또는모드 ) 은 Java EE 컨테이너에서사용하지않고 Java Standalone 클라이언트와같은환경에서사용하는경우를말한다. 이때는로컬트랜잭션만사용할수있으며, 사용되는데이터베이스의 JDBC 설정을프로퍼티로설정해야한다. 다음의예제와같이 <transaction-type> 의값을 'RESOURCE_LOCAL' 로설정한다. [ 예 2.2] Java SE 모드에서데이터베이스설정예 <?xml version="1.0" encoding="utf-8"?> <persistence xmlns="http://java.sun.com/xml/ns/persistence"> <persistence-unit name="em" transaction-type="resource_local"> <properties> <property name="eclipselink.jdbc.driver" value="org.apache.derby.jdbc.clientdriver"/> <property name="eclipselink.jdbc.url" value="jdbc:derby://localhost:1527/testdb"/> <property name="eclipselink.jdbc.user" value="app"/> <property name="eclipselink.jdbc.password" value="app"/> </properties> </persistence-unit> </persistence> 다음은프로퍼티값에대한설명이다. [ 표 2.1] Java SE 모드데이터베이스프로퍼티 프로퍼티값 eclipselink.jdbc.driver eclipselink.jdbc.url 설명 대상데이터베이스의 JDBC 드라이버클래스이름이다. 대상데이터베이스의 JDBC URL 이다. 4 JEUS JPA 안내서

프로퍼티값 eclipselink.jdbc.user eclipselink.jdbc.password 설명 대상데이터베이스의사용자명이다. 대상데이터베이스의패스워드이다. 2.1.2. 데이터베이스타입설정 기본적으로해당데이터베이스타입을 JDBC 커넥션정보를통해자동으로감지한다. 자동감지기능이제대로동작하지않거나, 별도의다른데이터베이스를사용하는경우라면 'eclipselink.target-database' 프로퍼티를설정할수있다. 참고 데이터베이스타입은 JDBC 드라이버의 DatabaseMetaData.getDatabaseProductName() 을사용하 여, 데이터베이스벤더이름을 regular expression 으로비교하는방식을사용한다. [ 예 2.3] 데이터베이스타입설정예 <?xml version="1.0" encoding="utf-8"?> <persistence xmlns="http://java.sun.com/xml/ns/persistence"> <persistence-unit name="em"> <jta-data-source>jdbc/mydb</jta-data-source> <properties> <property name="eclipselink.target-database" value="db2"/> </properties> </persistence-unit> </persistence> 다음은지원되는데이터베이스타입값에대한설명이다. [ 표 2.2] eclipselink.target-database 프로퍼티 값 Auto Attunity Cloudscape DB2 DB2Mainframe DBase Derby HSQL Informix 설명자동감지 ( 기본값 ) Attunity DBMS Cloudscape DBMS IBM DB2 DBMS IBM DB2 Mainframe DBMS DBase DBMS Apache Derby DBMS HSQL DBMS Informix DBMS 제 2 장프로바이더설정 5

값 JavaDB MySQL4 Oracle PointBase PostreSQL SQLAnyWhere SQLServer Sybase TimesTen Customized class name 설명 JavaDB DBMS MySQL DBMS Oracle DBMS PointBase DBMS PostreSQL DBMS SQLAnywhere DBMS Microsoft SQLServer DBMS Sybase DBMS Oracle Timesten DBMS 기본적으로지원되지않는 DBMS를추가할때사용한다. 기본적으로지원되지않는 DBMS 의경우별도로 DBMS 지원기능을구현하여사용할수있다. 이때는해 당클래스이름을지정하면된다. 이에대한자세한내용은본안내서의참고자료를참고한다. 2.1.3. 스키마자동생성설정 자동으로 DB 스키마를생성하는기능을사용하는경우설정한다. 이를사용하면애플리케이션을 deploy 할때 DB 테이블및제약사항 (Constraints) 을자동으로생성한다. [ 예 2.4] 스키마자동생성설정예 <?xml version="1.0" encoding="utf-8"?> <persistence xmlns="http://java.sun.com/xml/ns/persistence"> <persistence-unit name="em"> <jta-data-source>jdbc/mydb</jta-data-source> <properties>... <property name="eclipselink.ddl-generation" value="create-tables" />... </properties> </persistence-unit> </persistence> 관련된프로퍼티설정은다음과같다. 항목 eclipselink.ddl-generation 설명 스키마 DDL(Data Descriptor Language) 을어떤식으로생성할지설 정한다. none : 아무것도하지않는다. ( 기본값 ) 6 JEUS JPA 안내서

항목 설명 create-tables : 존재하지않는테이블을생성하며, 기존테이블은그대로남겨둔다. drop-and-create-tables : 기존에존재하는테이블을삭제하고다시생성한다. DDL 을생성할때기본적으로다음과같이 Java 타입을해당데이터베이스 SQL 타입에맞게생성한다. [ 표 2.3] Java Type to SQL Type Mappings Java Type Derby, Oracle DB2 Sybase SQLServer MySQL JavaDB, Cloudscape boolean, SMALLINT NUMBER(1) SMALLINT BIT BIT TINYINT(1) Boolean int, Integer INTEGER NUMBER(10) INTEGER INTEGER INTEGER INTEGER long, Long BIGINT NUMBER(19) INTEGER NUMER NUMER BIGINT IC(19) IC(19) float, Float FLOAT NUMER FLOAT FLOAT(16) FLOAT(16) FLOAT IC(19,4) double, Dou FLOAT NUMER FLOAT FLOAT(32) FLOAT(32) DOUBLE ble IC(19,4) short, Short SMALLINT NUMBER(5) SMALLINT SMALLINT SMALLINT SMALLINT byte, Byte SMALLINT NUMBER(3) SMALLINT SMALLINT SMALLINT SMALLINT ja DECIMAL NUMBER(38) DECIMAL(15) NUMER NUMER DECIMAL(38) va.lang.num IC(38) IC(28) ber java.math.big BIGINT NUMBER(38) BIGINT NUMER NUMER BIGINT Integer IC(38) IC(28) ja DECIMAL NUMBER(38) DECIMAL(15) NUMER NUMER DECIMAL(38) va.math.bigdec IC(38) IC(28) imal ja VAR VAR VAR VAR VAR VAR va.lang.string CHAR(255) CHAR(255) CHAR(255) CHAR(255) CHAR(255) CHAR(255) char, Charac CHAR(1) CHAR(1) CHAR(1) CHAR(1) CHAR(1) CHAR(1) ter byte[], Byte[], BLOB(64000) LONG RAW BLOB(64000) TEXT TEXT TEXT(64000) java.sql.blob 제 2 장프로바이더설정 7

Java Type Derby, Oracle DB2 Sybase SQLServer MySQL JavaDB, Cloudscape char[], Char CLOB(64000) LONG CLOB(64000) TEXT TEXT TEXT(64000) acter[], ja va.sql.clob java.sql.date DATE DATE DATE DATETIME DATETIME DATE java.sql.time TIME DATE TIME DATETIME DATETIME TIME ja TIMESTAMP DATE TIMESTAMP DATETIME DATETIME DATETIME va.sql.times tamp 2.2. Caching JPA에서는기본적으로 Persistence Context라고하는 1st-level Caching을지원하고있다. 하지만, 일반적으로 Persistence Context는트랜잭션별로새로생성되기때문에 (Extended Persistence Context는이에해당하지않음 ) 트랜잭션간에 Caching을지원하지않는다. 이를보완하기위해 TopLink Essentials에서는 2nd-level Caching 기능을제공한다. 2nd-level Caching은 EntityManagerFactory 레벨에서지원되기때문에, 동일한 EntityManagerFactory에서생성된모든 EntityManager의경우이공유 Cache를사용하게된다. 즉, Persistence Context에없는 Entity를가져올때 2nd-level Caching을참고하여존재하는경우에이를가져온다. 따라서반복적인 Read 작업의경우성능향상을가져오게된다. [ 예 2.5] Caching 방식설정예 <?xml version="1.0" encoding="utf-8"?> <persistence xmlns="http://java.sun.com/xml/ns/persistence"> <persistence-unit name="em"> <jta-data-source>jdbc/mydb</jta-data-source> <properties>... <property name="eclipselink.ddl-generation" value="create-tables" /> <property name="eclipselink.cache.type.default" value="none" /> <property name="eclipselink.cache.size.default" value="999" /> <property name="eclipselink.cache.shared.default" value="false" />... </properties> </persistence-unit> </persistence> 다음은 Caching 에관련된옵션에대한설명이다. 8 JEUS JPA 안내서

항목 eclipselink.cache.type.default 설명 Caching 방식을설정한다. Full : 객체를 Hard reference로 Caching한다. 따라서 Entity가삭제되기전까지항상 Cache에존재하게된다. HardWeak : Weak와유사하며, 자주사용되는객체는 Hard reference로 Caching한다. SoftWeak : Weak와유사하며, 자주사용되는객체는 Soft ref erence로 Caching한다. 자주사용되는객체는메모리가부족할때사라진다. ( 기본값 ) Weak : 객체를 Weak reference로 Caching한다. Garbage Col lection(gc) 이되면사라진다. NONE : 객체를 Cache에저장하지않는다. 사용을권장하지않으며 Caching 기능을사용하고싶지않다면, toplink.cache.shared.xxx 프로퍼티를설정하기를권장한다. eclipselink.cache.size.default eclipselink.cache.shared.default Cache 에저장될최대객체수를설정한다. ( 기본값 : 1000) 공유 Cache 를사용할지여부를설정한다. true : 객체가공유 Cache에저장된다. 모든 EntityManager는 Caching을사용하게된다. ( 기본값 ) false : 객체가공유 Cache에저장되지않는다. 따라서, Entity Manager별로 Cache를공유하지않는다. 이를사용하면 2ndlevel Caching을하지않는효과가있다. eclipselink.cache.type.<entity> Entity 별로 Caching 을하는방식을지정한다. <ENTITY> 는 Entity 이름또는 fully-qualified 클래스이름이될수있다. 해당 Entity와관계를가지는모든 Entity는같은설정을가져야한다. eclipselink.cache.type.default의값설명과동일하다. eclipselink.cache.size.<entity> Entity 별로 Cache 사이즈를지정한다. <ENTITY> 는 Entity 이름또는 fully-qualified 클래스이름이될수 있다. eclipselink.cache.size.default 의값설명과동일하다. eclipselink.cache.shared.<entity> Entity 별로공유 Cache 를사용할지를지정한다. <ENTITY> 는 Entity 이름또는 fully-qualified 클래스이름이될수있다. 해당 Entity와관계를가지는모든 Entity는동일한설정을가져야한다. eclipselink.cache.shared.default의값설명과동일하다. 제 2 장프로바이더설정 9

주의 2nd-level Caching이사용될때주의할것은외부애플리케이션에의해또는직접데이터베이스의데이터를변경하는경우해당내용이 Caching에반영되지않는다는점이다. 이런경우데이터베이스의최신값이아닌 Caching된값이리턴되기때문에애플리케이션에이를고려해야한다. Caching 옵션을애플리케이션환경을고려하여적절히설정하거나, EntityManager.refresh(), eclipselink.refresh Query 힌트또는 locking(pessimistic/optimistic) 등을사용하여이런문제를피할수있다. 2.3. Query 힌트 Query 힌트는 Query 객체를사용할때프로바이더에서제공하는기능을사용하도록한다. 다음예제와같이 Query를실행할때설정할수도있고, Named Query를사용하는경우 @QueryHint An notation을사용하여지정할수도있다. [ 예 2.6] Query 힌트사용예제 List employees = em.createquery("select e FROM Employee e WHERE e.name = :name").setparameter("name", name).sethint("eclipselink.refresh", true).getresultlist(); 제공하는 Query 힌트는다음과같다. 항목 eclipselink.pessimistic-lock 설명 SELECT 할때 Pessimistic Locking 을사용할지여부를설정한다. NoLock : 사용하지않는다. ( 기본값 ) Lock : SELECT... FOR UPDATE 문을사용해 Locking을한다. NoLockWait : SELECT... FOR UPDATE NO WAIT 문을사용해 Locking을한다. eclipselink.refresh 데이터베이스에서최신값을가져와 Caching 을업데이트할지여 부를설정한다. true : 최신값을가져오고 Caching 을업데이트한다. false : Cache 에있는값을사용한다. ( 기본값 ) 10 JEUS JPA 안내서

2.4. Logging 설정 좀더자세한로그를보고싶다면 Logging 레벨을설정할수있다. 기본적으로 Logging 레벨은 JEUS 서버에전체적으로적용되는레벨 ( 기본적으로 INFO) 을따르게되지만, 이를 Persistence Unit별로변경할경우 eclipselink.logging.level 프로퍼티로설정할수있다. Logger의경우 Java EE 모드에서는기본적으로 JEUS에서제공되는 Logger(JEUS Logger) 를사용하게되며, Java SE 모드에서는 standard output으로출력되는 DefaultLogger를사용하게된다. 이를변경하려면 eclipselink.logging.logger 프로퍼티로설정할수있다. [ 예 2.7] Logging 설정예 <?xml version="1.0" encoding="utf-8"?> <persistence xmlns="http://java.sun.com/xml/ns/persistence"> <persistence-unit name="em"> <jta-data-source>jdbc/mydb</jta-data-source> <properties>... <property name="eclipselink.logging.level" value="fine"/> <property name="eclipselink.logging.logger" value="defaultlogger"/>... </properties> </persistence-unit> </persistence> 다음은설정에대한자세한설명이다. 항목 eclipselink.logging.level 설명 Logging 레벨을지정한다. OFF: Logging을하지않는다. SEVERE WARNING INFO( 기본값 ) CONFIG FINE: SQL 관련정보를조회하려면이레벨로설정한다. FINER FINEST eclipselink.logging.logger 사용할 Logger 를지정한다. JEUSLogger : JEUS에서제공되는 Logger이다. (Java EE 모드인경우기본값 ) DefaultLogger : 기본 standard output Logger이다. (Java SE 모드인경우기본값 ) 제 2 장프로바이더설정 11

항목 설명 JavaLogger : java.util.logging Logger 이다. Custom class name : 별도의 Logger 를구현한경우지정한다. 참고 1. EclipseLink에대한자세한설정은 http://wiki.eclipse.org/eclipselink/userguide/jpa를참고한다. 2. TopLink에서 EclipseLink로전환할경우 http://www.eclipse.org/eclipselink/documentation/2.4/so lutions/migrnativetoplink.htm를참고한다. 12 JEUS JPA 안내서

제 3 장프로바이더변경 본장에서는 JEUS 의기본프로바이더를변경하는방법에대해서설명한다. 3.1. Persistence 프로바이더변경 JEUS에서기본적으로제공되는프로바이더가아닌다른프로바이더를사용하려면 JPA 스펙에서제공하는설정을사용한다. 먼저필요한라이브러리들을 JEUS_HOME/lib/application에복사하거나또는각애플리케이션별로패키징한다. 그리고해당프로바이더클래스이름을 persistence.xml의 <provider> 값에설정하면, Persistence Unit별로설정한프로바이더를사용한다. 프로바이더클래스이름과관련프로퍼티값들도각프로바이더별로다르므로해당문서를참고하여설정해야한다. 예를들어, Hibernate를사용하는경우다음과같이설정한다. [ 예 3.1] Persistence 프로바이더변경예 <?xml version="1.0" encoding="utf-8"?> <persistence xmlns="http://java.sun.com/xml/ns/persistence"> <persistence-unit name="em"> <provider>org.hibernate.ejb.hibernatepersistence</provider> <jta-data-source>jdbc/mydb</jta-data-source> <properties> <!-- add Hibernate properties here --> </properties> </persistence-unit> </persistence> 위와같이 Persistence Unit별로프로바이더를변경할수도있지만, JEUS의디폴트프로바이더를변경할수있다. JEUS를구동시킬때시스템프로퍼티 jeus.persistence.defaultprovider를해당프로바이더클래스이름으로설정하면프로바이더가지정되지않는모든 Persistence Unit의경우해당디폴트프로바이더를사용하게된다. 참고 JEUS 시스템프로퍼티설정은 "JEUS Server 안내서 " 나 "JEUS Reference Book" 을참고한다. 제 3 장프로바이더변경 13

3.2. 사용가능한 Persistence 프로바이더 다른 Persistence 프로바이더에대해서는다음의각사이트를참고한다. Hibernate EntityManager http://www.hibernate.org OpenJPA http://openjpa.apache.org BEA Kodo http://docs.oracle.com/cd/e13189_01/kodo/docs40/index.html 14 JEUS JPA 안내서

색인 P Persistence 프로바이더, 1, 13 Q Query 힌트, 10 Symbols 2nd-level Caching, 8 C Caching, 8 E EclipseLink, 1 eclipselink.cache.shared.<entity>, 9 eclipselink.cache.shared.default, 9 eclipselink.cache.size.<entity>, 9 eclipselink.cache.size.default, 9 eclipselink.cache.type.<entity>, 9 eclipselink.cache.type.default, 9 eclipselink.ddl-generation, 6 eclipselink.jdbc.driver, 4 eclipselink.jdbc.password, 5 eclipselink.jdbc.url, 4 eclipselink.jdbc.user, 5 eclipselink.logging.level, 11 eclipselink.logging.logger, 11 eclipselink.pessimistic-lock, 10 eclipselink.refresh, 10 eclipselink.target-database 프로퍼티, 5 J Java EE 환경프로바이더설정, 3 Java SE 모드데이터베이스프로퍼티, 4 Java SE 환경프로바이더설정, 4 Java Type to SQL Type Mappings, 7 JPA, 1 L Logger, 11 색인 15