고급 java 애플리케이션 구현을 위한 o/r mapping …...5 impedance mismatch 논리적...

34
1 고급 Java 애플리케이션 구현을 위한 O/R Mapping Framework OracleAS TopLink 김철웅 WAS한국오라클

Upload: others

Post on 20-Feb-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 고급 Java 애플리케이션 구현을 위한 O/R Mapping …...5 Impedance Mismatch 논리적 데이터표현 오브젝트,메써드,상속 테이블,SQL,저장프로시져 규모

1

고급 Java 애플리케이션구현을위한O/R Mapping Framework

OracleAS TopLink김철웅WAS팀한국오라클

Page 2: 고급 Java 애플리케이션 구현을 위한 O/R Mapping …...5 Impedance Mismatch 논리적 데이터표현 오브젝트,메써드,상속 테이블,SQL,저장프로시져 규모

2

차례

개요

TopLink 기술적소개TopLink컴포넌트

– Mapping Workbench– Foundation Library

TopLink 애플리케이션유형과개발절차

Page 3: 고급 Java 애플리케이션 구현을 위한 O/R Mapping …...5 Impedance Mismatch 논리적 데이터표현 오브젝트,메써드,상속 테이블,SQL,저장프로시져 규모

3

데이터베이스애플리케이션개발의문제

관계형데이터베이스를이용하는자바애플리케이션의개발의문제점

– 근본적으로다른기술스택

– 다른스킬세트

– 다른프로젝트구성원

– 다른모델링및디자인원칙

“노동집약으로비용이많이듬”

Page 4: 고급 Java 애플리케이션 구현을 위한 O/R Mapping …...5 Impedance Mismatch 논리적 데이터표현 오브젝트,메써드,상속 테이블,SQL,저장프로시져 규모

4

문제의근원

오브젝트– 실세계엔티티를디자인하고, 소프트웨어의표현으로사용

– 데이터와코드 ( 상태와행위) 로표현관계형데이터베이스

– 데이터를신뢰성있고, 대용량으로취급하고자함– 테이블로데이터를표현, SQL로데이터를다룸

“Impedance Mismatch”가존재

Page 5: 고급 Java 애플리케이션 구현을 위한 O/R Mapping …...5 Impedance Mismatch 논리적 데이터표현 오브젝트,메써드,상속 테이블,SQL,저장프로시져 규모

5

Impedance Mismatch

논리적데이터표현

오브젝트,메써드,상속 테이블,SQL,저장프로시져

규모 수백메가바이트 기가,테라바이트

관계의표현 메모리참조 외래키

유일성표현 내부오브젝트식별자 프라이머리키

주요기술 자바개발, 오브젝트모델링

SQL, 저장프로시져, 데이터관리, 데이터모델링

개발도구 IDE, 소스코드관리도구,오브젝트모델러

스키마디자이너, 쿼리관리자, 성능프로파일러, 데이터베이스구성도구

항목 J2EE 관계형데이터베이스

Page 6: 고급 Java 애플리케이션 구현을 위한 O/R Mapping …...5 Impedance Mismatch 논리적 데이터표현 오브젝트,메써드,상속 테이블,SQL,저장프로시져 규모

6

OracleAS TopLink솔루션

OracleAS TopLink는자바와 관계형데이터베이스사이의다양한매핑에주안점을둔강력하고도검증된 “out of the box”솔루션을제공

OracleOracleAS AS TopLinkTopLink

Page 7: 고급 Java 애플리케이션 구현을 위한 O/R Mapping …...5 Impedance Mismatch 논리적 데이터표현 오브젝트,메써드,상속 테이블,SQL,저장프로시져 규모

7

애플리케이션 ? 기반구조 ?

Work Smarter

데이터베이스를사용하는일반자바애플리케이션

Work harder

TopLink를사용한자바애플리케이션

TopLink 애플리케이션

애플리케이션개발 : 80기반구조개발 : 20

Page 8: 고급 Java 애플리케이션 구현을 위한 O/R Mapping …...5 Impedance Mismatch 논리적 데이터표현 오브젝트,메써드,상속 테이블,SQL,저장프로시져 규모

8

위험요소의제거

• TopLink는미션크리티컬애플리케이션에서검증된제품

• TopLink를사용하는개발시데이터베이스프로그래밍및애플리케이션서버기반구조전문가를필요로하지않음

• TopLink를사용하는애플리케이션의데이터베이스변화에따른매핑의유지보수의용이함

Page 9: 고급 Java 애플리케이션 구현을 위한 O/R Mapping …...5 Impedance Mismatch 논리적 데이터표현 오브젝트,메써드,상속 테이블,SQL,저장프로시져 규모

9

애플리케이션개발자/설계자를위한유연성

TopLink는 어떤모델/아키텍처와도연동

다양한모델링접근과툴셋을지원다양한아키텍쳐접근을지원

– 자바오브젝트

– Entity Bean– JSP– Servlet– 세션빈– Message Driven Beans– 2-Tier, 3-Tier, Peer-to-peer– Fat client, thin client

Page 10: 고급 Java 애플리케이션 구현을 위한 O/R Mapping …...5 Impedance Mismatch 논리적 데이터표현 오브젝트,메써드,상속 테이블,SQL,저장프로시져 규모

10

데이터베이스설계자를위한유연성

TopLink는어떤데이터베이스디자인과도연동DBA는데이터베이스디자인에만주력

– 자바애플리케이션으로부터데이터베이스를격리

– 데이터디자인이오브젝트모델에독립적이며그역도성립

데이터베이스의사용을극대화– 저장프로시져

– 유연성있는질의옵션

– 데이터변환

Page 11: 고급 Java 애플리케이션 구현을 위한 O/R Mapping …...5 Impedance Mismatch 논리적 데이터표현 오브젝트,메써드,상속 테이블,SQL,저장프로시져 규모

11

TopLink 채택의장점

비용절감의효과

성능의향상

생산성의향상

프로젝트의복잡성감소

유연성

Page 12: 고급 Java 애플리케이션 구현을 위한 O/R Mapping …...5 Impedance Mismatch 논리적 데이터표현 오브젝트,메써드,상속 테이블,SQL,저장프로시져 규모

12

차례

개요

TopLink 기술적소개TopLink컴포넌트

– Mapping Workbench– Foundation Library

TopLink 애플리케이션유형과개발절차

Page 13: 고급 Java 애플리케이션 구현을 위한 O/R Mapping …...5 Impedance Mismatch 논리적 데이터표현 오브젝트,메써드,상속 테이블,SQL,저장프로시져 규모

13

OracleAS TopLink

자바기반애플리케이션의관계형데이터저장을용이하게함

TopLink는퍼시스턴스와관련된자바애플리케이션의개발,배치,실행을단순하고편리하게함

Java application

JDBCOracle

TopLinkSQL

Rows

Page 14: 고급 Java 애플리케이션 구현을 위한 O/R Mapping …...5 Impedance Mismatch 논리적 데이터표현 오브젝트,메써드,상속 테이블,SQL,저장프로시져 규모

14

TopLink아키텍쳐

TopLink는 2가지주요컴포넌트로이루어짐– Mapping Workbench

개발시 매핑과 배치설정을지원하는 GUI 도구– Foundation Library

개발을위한 API 와읽기,쓰기,캐싱,트랜잭션,성능등을 유지하는런타임라이브러리로구성

– 다음과같은기술을기반으로구성

JDBC, JTS, J2EE/EJB, 오브젝트/관계형데이터베이스타입

Page 15: 고급 Java 애플리케이션 구현을 위한 O/R Mapping …...5 Impedance Mismatch 논리적 데이터표현 오브젝트,메써드,상속 테이블,SQL,저장프로시져 규모

15

차례

개요

TopLink기술적소개TopLink컴포넌트

– Mapping Workbench– Foundation Library

TopLink애플리케이션유형과개발절차

Page 16: 고급 Java 애플리케이션 구현을 위한 O/R Mapping …...5 Impedance Mismatch 논리적 데이터표현 오브젝트,메써드,상속 테이블,SQL,저장프로시져 규모

16

Mapping Workbench

O/R 매핑을표현하는메타데이터를생성하고유지하는 GUI

Page 17: 고급 Java 애플리케이션 구현을 위한 O/R Mapping …...5 Impedance Mismatch 논리적 데이터표현 오브젝트,메써드,상속 테이블,SQL,저장프로시져 규모

17

메타 데이터 아키텍쳐매핑정보는오브젝트가아닌 XML 디스크립터로유지OracleAS TopLink메타데이터는오브젝트모델혹은스키마에영향을주지않음

Employee E_ID A_IDB_DATEL_NAMEF_NAME

EMPLOYEE

- id- firstName- lastName- address- birthDate

- id- city- state- zip

A_ID ZIPSTATECITY

TopLink

Metadata

Address

ADDRESS

Page 18: 고급 Java 애플리케이션 구현을 위한 O/R Mapping …...5 Impedance Mismatch 논리적 데이터표현 오브젝트,메써드,상속 테이블,SQL,저장프로시져 규모

18

Mapping Workbench 개발옵션

IMPO

RTGEN

ERATE

IMPO

RT

(.class)

GENERATE

(.java)관계형데이터베이스

(스키마)자바 IDE

TopLink

Meta-Data(XML)

자바클래스

TopLinkMapping

Workbench

Page 19: 고급 Java 애플리케이션 구현을 위한 O/R Mapping …...5 Impedance Mismatch 논리적 데이터표현 오브젝트,메써드,상속 테이블,SQL,저장프로시져 규모

19

Mapping Workbench 지원사항

다양한오브젝트모델을다양한관계형데이터베이스스키마로매핑

– “Meet in the Middle”오브젝트모델로부터스키마를생성

스키마로부터오브젝트모델생성

데이터베이스의상세한정보에대한지식이없어도데이터베이스기능을사용할수있게함

Page 20: 고급 Java 애플리케이션 구현을 위한 O/R Mapping …...5 Impedance Mismatch 논리적 데이터표현 오브젝트,메써드,상속 테이블,SQL,저장프로시져 규모

20

단순오브젝트모델의예

Customer

id: intname: StringcreditRating: int

Address

id: intcity: Stringzip: String

11:1 Relationship

Page 21: 고급 Java 애플리케이션 구현을 위한 O/R Mapping …...5 Impedance Mismatch 논리적 데이터표현 오브젝트,메써드,상속 테이블,SQL,저장프로시져 규모

21

일반적인 1-1 관계스키마

CUST

ID NAME A_IDC_RATINGADDR

ID CITY ZIP

Page 22: 고급 Java 애플리케이션 구현을 위한 O/R Mapping …...5 Impedance Mismatch 논리적 데이터표현 오브젝트,메써드,상속 테이블,SQL,저장프로시져 규모

22

가능한스키마 (1)

CUST

ID NAME C_RATING C_ID

ADDR

ID CITY ZIP

A_ID

CUST_ADDR

C_ID

CUST

ID NAME C_RATE C_ID

ADDR

ID CITY ZIP

CUST

ID NAME CITY ZIPC_RATING

Page 23: 고급 Java 애플리케이션 구현을 위한 O/R Mapping …...5 Impedance Mismatch 논리적 데이터표현 오브젝트,메써드,상속 테이블,SQL,저장프로시져 규모

23

가능한스키마 (2)CUST

ID NAME A_ID

ADDR

ID CITY ZIP

CUST_CREDIT

ID C_RATING

CUST

ID NAME

ADDR

ID CITY ZIP

CUST_CREDIT

ID C_RATING A_ID

CUST

ID NAME

CUST_CREDIT

ID C_RATING

ADDR

ID CITY ZIP C_ID

CUST

ID NAME

CUST_CREDIT

ID C_RATING

ADDR

ID CITY ZIP C_ID CUST

ID NAME

ADDR

ID CITY ZIP

CUST_CREDIT

ID C_RATING A_IDCC_ID

Page 24: 고급 Java 애플리케이션 구현을 위한 O/R Mapping …...5 Impedance Mismatch 논리적 데이터표현 오브젝트,메써드,상속 테이블,SQL,저장프로시져 규모

24

고급 매핑 지원과 유연성

직접필드매핑, 1-1, 1-N , M-N 매핑을지원– 다양한종류의외래키관계를지원

오브젝트타입, 변환– Enumeration (‘Male’-> ‘M’) 혹은타입변환 (String ->

Number)– 사용자정의변환

집합, 다중테이블– 한행당여러개의오브젝트/ 빈– 다중테이블에오브젝트/빈을매핑

기타 –직렬화된매핑, Direct Collections, Object-Relational Mappings 등

Page 25: 고급 Java 애플리케이션 구현을 위한 O/R Mapping …...5 Impedance Mismatch 논리적 데이터표현 오브젝트,메써드,상속 테이블,SQL,저장프로시져 규모

25

차례

개요

TopLink 기술적소개TopLink컴포넌트

– Mapping Workbench– Foundation Library

TopLink애플리케이션유형과개발절차

Page 26: 고급 Java 애플리케이션 구현을 위한 O/R Mapping …...5 Impedance Mismatch 논리적 데이터표현 오브젝트,메써드,상속 테이블,SQL,저장프로시져 규모

26

TopLink런타임아키텍쳐

Data Source

TopL

ink Persistence Manager

CacheQuery

TX

Object Data

Conversion

J2EE Services

JTACMP/BMP

ConnectionPools

JDBC

Mappings

Presentation Interface

Application Logic

J2EEServer

Business Entities

Page 27: 고급 Java 애플리케이션 구현을 위한 O/R Mapping …...5 Impedance Mismatch 논리적 데이터표현 오브젝트,메써드,상속 테이블,SQL,저장프로시져 규모

27

쿼리 유연성

자바개발자스킬과기존시스템을이용한쿼리유연성

– SQL 과저장프로시져를지원– TopLink쿼리프레임워크를이용하여자바기반쿼리를설계

Java ExpressionsSQL/ Stored Proc

EJBQLOracleAS TopLink

Objects

SQL/Stored Proc

Rows

Page 28: 고급 Java 애플리케이션 구현을 위한 O/R Mapping …...5 Impedance Mismatch 논리적 데이터표현 오브젝트,메써드,상속 테이블,SQL,저장프로시져 규모

28

자바오브젝트쿼리

자바개발자의스킬을그대로이용

– SQL 사용을강제받지않음쉬운유지보수

고급쿼리지원

– 데이터베이스특정함수

– Outer-join– 중첩서브쿼리

– 새로운함수생성

쿼리는캐쉬를이용해 “in memory” 로운영할수있음

Page 29: 고급 Java 애플리케이션 구현을 위한 O/R Mapping …...5 Impedance Mismatch 논리적 데이터표현 오브젝트,메써드,상속 테이블,SQL,저장프로시져 규모

29

자바 오브젝트 쿼리 예“Widget”을주문한모든고객을찾는예제

–자바개발자를위한사용법 : custExpression.anyOf(“orders”).anyOf(“orderItems”). get(“product”).get("productName").equal(“Widget”)

– SQL로의표현:SELECT t3.ID, t3.FIRST_NAME, t3.LAST_NAME, t3.STREET, t3.CITY,

t3.STATE, t3.ZIP FROM CUSTOMER t3, ORDER t2, ORDER_ITEMS t1, PRODUCT t0 WHERE ((t0.PRODUCT_NAME = 'Widget') AND ((t2.CUST_ID = t3.ID) AND ((t1.ORDER_ID = t2.ID) AND (t0.ID = t1.PRODUCT_ID))))

Customer ProductOrder OrderItem1firstName

lastName

orders

productName

cost

weight

orderDate

cost

orderItems

quantity

discount

product

1 11* *

Page 30: 고급 Java 애플리케이션 구현을 위한 O/R Mapping …...5 Impedance Mismatch 논리적 데이터표현 오브젝트,메써드,상속 테이블,SQL,저장프로시져 규모

30

TopLink 런타임기능

Object Traversal – Lazy ReadsJust In Time ReadingCaching트랜잭션지원, 관리Locking성능튜닝옵션

Page 31: 고급 Java 애플리케이션 구현을 위한 O/R Mapping …...5 Impedance Mismatch 논리적 데이터표현 오브젝트,메써드,상속 테이블,SQL,저장프로시져 규모

31

차례

개요

TopLink 기술적소개TopLink컴포넌트

– Mapping Workbench– Foundation Library

TopLink애플리케이션유형과개발절차

Page 32: 고급 Java 애플리케이션 구현을 위한 O/R Mapping …...5 Impedance Mismatch 논리적 데이터표현 오브젝트,메써드,상속 테이블,SQL,저장프로시져 규모

32

TopLink 애플리케이션유형TL

TL

… DB

CMP Entity Beans: 네번째패턴과유사하지만매핑, 쿼리, 기타TopLink에의한호출은컨테이너가자동적으로관리

BMP Entity Beans: 세번째패턴의확장된형태로퍼시스턴트데이터를엔티티빈으로유지하며, 클라이언트는엔티티빈의인터페이스로접근

Session-Beans, JSP, Servlets with Java Objects: 3-tier 구조로부터확장된형태로세션빈에서퍼시스턴트자바오브젝트로접근하며, 주로 JTS 통합과클라이언트로의직렬화된데이터를취급

Three-Tier: TopLink가 J2EE 서버(애플리케이션서버) 에포함되는매우일반적인패턴으로서버컴포넌트, 웹클라이언트, 자바클라이언트 , XML/CORBA 기반클라이언트로부터접근

Two-Tier: 자바클라이언트에서데이터베이스에 TopLink를이용해직접연결, 애플리케이션서버, 서버환경이필요하지않음

ServerDBTL…

Server

TL…SB

SB… DB

Server

TL… EBBMP Container

DB

Server

TL… EBCMP Container

DB

Page 33: 고급 Java 애플리케이션 구현을 위한 O/R Mapping …...5 Impedance Mismatch 논리적 데이터표현 오브젝트,메써드,상속 테이블,SQL,저장프로시져 규모

33

TopLink 개발절차

Mapping Workbench

Transactional Framework(UOW)

Session Manager

Query Framework

TopLink

메타데이터(XML)

Businessmodel

Databaseschema

생성

메타데이터 O/R 매핑

저장한오브젝트관리에TopLink를사용

Page 34: 고급 Java 애플리케이션 구현을 위한 O/R Mapping …...5 Impedance Mismatch 논리적 데이터표현 오브젝트,메써드,상속 테이블,SQL,저장프로시져 규모

34

Demonstration