Download as pdf
Download as pdf
You are on page 1of 29

om

i.c
dil
vaja

Burcu CAN
w.

Hacettepe Üniversitesi
Bilgisayar Mühendisliği
burcucana@hotmail.com
ww
İçindekiler

m
Giriş …………………………………………………………………………………….. 4
TopLink Kullanmanın Sağladığı Avantajlar …………………………………………. 4
TopLink Bileşenleri ……………………………………………………………………. 4
TopLink Framework …………………………………………………………………... 5-6
TopLink’in Kurulumu ………………………………………………………………… 6

o
Sistem Gereksinimleri ………………………………………………………… 6-7
İşletim Sistemi Gereksinimleri ………………………………………… 6
Donanım Gereksinimleri………………………………………………... 6
Yazılım Gereksinimleri………………………………………………….. 6-7

i.c
TopLink’in Kurulması …………………………………………………………. 7-8
PATH ve CLASSPATH Değişkenlerinin Değiştirilmesi………………. 7-8
Farklı Geliştirme Ortamlarına Göre Yapılması Gereken TopLink Ayarları…. 8-9
Sun JDK ve JRE………………………………………………………... 8
Java için IBM için VisualAge …………………………………………. 8-9
TopLink Kurulumunun Test Edilmesi ………………………………………... 9

dil
TopLink ve Veritabanı …………………………………………………………………. 10
İlişkisel Veritabanları ………………………………………………………….. 10-11
Tablolar, Kayıtlar ve Alanlar ………………………………………….... 10
Anahtarlar ………………………………………………………………. 10-11
Sıra Numaraları ………………………………………………………… 11
Java Nesne Modeli …………………………………………………………...... 11-12
Nesneler ve İlişkisel Alanlar Arasındaki Benzerlikler …………………. 12
va
Nesneleri İlişkisel Veritabanına Kaydetmek…………………………… . 12-13
TopLink Tanımlayıcıları (TopLink Descriptors)………………………………. 13
Eşlemeler (Mappings)………………………………………………......................14
İlişkisel Eşlemeler………………………………………………………..14
Doğrudan Eşlemeler ……………………………………………………. 14
Veritabanı Oturumları ………………………………………………………….. 14
ja

TopLink’i Bir Uygulamada Kullanmak …………………………………………15


Transaction………………………………………………………………..15
Çalışma Birimi …………………………………………………………… 15
Java Nesnelerini Yazmak ve Okumak……………………………………. 15
TopLink Mapping Workbench………………………………………………… 15-17
w.

Tasarım Stratejileri ve İpuçları………………………………………………… 17-18


Veritabanı Hususları…………………………………………………………… 19
Eşleme …………………………………………………………………………………….
Genel Eşleme Kavramları ……………………………………………………… 19-21
Basit Eşlemeler ………………………………………………………… .21-22
Doğrudan Eşlemeler ……………………………………………………. 22-25
ww

Alana Doğrudan Eşlemeler …………………………………… 22-24


Tür Dönüşüm Eşlemeleri ……………………………………… 24-25
Nesne Türü Eşlemeler ………………………………………… 25
Serialization ve TopLink ……………………………………………………………… 25
Kalıtım ve TopLink…………………………………………………………………… 25-26
OracleAS TopLink Projesinin Düzenlenmesi…………………………………………. 26-29
OracleAS TopLink Tanımlayıcılarını Düzeltme Metodlarıyla Değiştirmek…. 26
Yükleme Sonrası Metodları Kullanmak……………………………………… 26

-2-
Tanımlayıcı Olayları………………………………………………………… 27
Java ile EJB Projeleri ve OracleAS TopLink Tanımlayıcıları Yaratmak…… 27-28
Kaynaklar……………………………………………………………………………… 29

o m
i.c
dil
ja va
w.
ww

-3-
Giriş
Oracle9iAS TopLink; Java uygulamalarının ilişkili veritabanlarına ve ilişkisiz veri kaynaklarına

m
erişmelerini sağlayan bir framework’tür. TopLink; nesneleri ve EJB’leri (Enterprise Java Beans)
kullanıcının nesne düzeyinde çalışmasına izin verecek şekilde veritabanına kaydeder.

TopLink Kullanmanın Sağladığı Avantajlar

o
TopLink; java nesnelerinin veya EJB’lerin ilişkisel veritabanına veya ilişkisiz veri kaynaklarına
kaydedilmesini sağlar. Böylece nesneler, nesneler arasındaki ilişkiler ve veritabanları arasındaki
ilişkiler arasında bir köprü kurulmuş olur. Nesneler; veriyi ve veriler arasındaki ilişkileri

i.c
kaydetmek için esnek bir yol sağlar ancak bu nesneleri ilişkisel veritabanlarında göstermek çok
karmaşık olabilmektedir.

TopLink sayesinde;
• Standard bir framework kullanılmasıyla birlikte; geliştirim süreci ve maliyet azalır.


uygulamalar geliştirilebilir. dil
Daha önceden kanıtlanmış performans imkanlarıyla daha yüksek performanslı

Herhangi bir Java ortamında veya Java uygulama sunucusunda çalışabilen bir Java ürünü
kullanılarak sistem bağımsızlığı %100’e çıkarılır.

• TopLink’in nesne düzeyinde sağladığı API’ler ve sorgular kullanılarak veri bağımsızlığı


va
sağlanır.

• Bir JDBC sürücüsü üzerinden herhangi bir veritabanına erişilebileceği gibi; TopLink
SDK üzerinden ilişkisel olmayan veri kaynaklarına da erişilebilir.

• EJB, XML, CORBA, JTS, RMI gibi teknolojilerle bütünleştirilebilir.


ja

TopLink Bileşenleri

OracleAS TopLink; ilişkisel veritabanında tutulan kalıcı nesnelere erişim yapan Java veya J2EE
w.

uygulamalarının kullanılmasını sağlayan bir çalışma zamanı birimidir (run-time environment).


Çalışma zamanı özelliklerinin yanı sıra Oracle Application Server TopLink Foundation Library;
OracleAS TopLink Uygulama Programlama Arayüzlerini de (Application Programming
Interface- API) içerir. Bu API’ler uygulamaların TopLink’in sağladığı birtakım çalışma zamanı
özelliklerini kullanabilmesini sağlar.
ww

-4-
Geliştirme Sürecinde OracleAS TopLink Bileşenleri

o m
i.c
dil
va
TopLink Framework
TopLink framework; Java nesnelerini ve EJB’leri ilişkisel veritabanlarında tutabilmek için esnek
bir mekanizma sağlar.

Oracle9iAS TopLink; Java uygulaması ve ilişkisel veritabanı arasında Java kodundan oluşan bir
ja

katmandır. (Şekilde görüldüğü gibi) İlişkisel veritabanı üzerinde nesneye yönelik bir wrapper
gibi davranır ve bir uygulamanın nesnelerini bir dizi ilişkisel veritabanına kaydetmesini sağlar.

Oracle9iAS TopLink Framework


w.
ww

İlişkisel veritabanının kullanılmasını kolaylaştırması dışında; bu model buna ek olarak şu


avantajları da sağlar:

-5-
• TopLink tarafından kullanılan wrapper model sayesinde uygulamalar en alt düzey
veritabanlarında oluşan değişimlerden korunmuş olur. Böylece veritabanında yapılan
değişikliklerin uygulama programının kodu üzerinde çok az etkisi olur.

m
• Veriyi kaydetmek ve geri almak için kullanılabilecek olan iyi tanımlanmış bir metodlar
kümesine sahiptir. Böylece farklı uygulamaların veritabanına ulaşmaları
standartlaştırılmış olur.

o
TOPLINK’IN KURULUMU

Sistem Gereksinimleri

i.c
TopLink’in sorunsuz olarak çalışabilmesi için belirtilen sistem gereksinimlerinin minimum
şekilde sağlanması gerekir.

İşletim Sistemi Gereksinimleri


Windows 2000
dil
TopLink aşağıda belirtilen işletim sistemlerinin herhangi birinde çalışabilmektedir:


Windows NT 4.0 (service pack 6)
• Java uyumlu herhangi bir UNIX işletim sistemi
va
Donanım Gereksinimleri

TopLink için sağlanması gereken donanım gereksinimleri çok düşüktür. Java ve birçok
veritabanı uygulamaları için zaten bu donanım gereksinimlerinin çok fazlası karşılanmak
zorundadır.

Yine de bir rehber olması açısından aşağıda minimum olarak verilen donanım gereksinimleri
ja

TopLink’in sorunsuz çalışması açısından gereklidir:

• Minimum 300Mhz’de çalışan bir Pentium®-sınıf işlemci


• 192 MB RAM
w.

• Hard disk’te 128 MB boş alan


• 1024*768 ekran çözünürlüğü

Yazılım Gereksinimleri

TopLink; aşağıda verilen destekli yazılımların kurulmasını gerektirir:


ww

• Yerel veritabanına erişim için bir JDBC sürücüsü


• JDBC API’leriyle uyumlu bir Java kod geliştirme ortamı, örneğin;
o Oracle JDeveloper
o Sun JDK 1.2 veya 1.3
o IBM VisualAge for Java
o Borland JBuilder
o Microsoft Visual J++

-6-
Veya Sun JDK 1.2 (veya daha üstü) ile uyumlu herhangi bir Java geliştirme ortamı

m
TopLink’in Kurulması

Bu bölümde Oracle9iAS TopLink’in kurulumu adım adım anlatılacaktır. (bu kurulum


kütüphaneleri ve Mapping Workbench’i de icermektedir)

o
Windows’da TopLink’i kurmak için;

• Yazılım indirilir veya CD-ROM üzerinden açılır. Eğer yazılım indirildiyse, yükleyici

i.c
(installer) sıkıştırılmış dosya halindedir ve açılması gerekir.
• Yükleyici üzerinde talimatlar izlenir.
• CLASSPATH ortam değişkeni kontrol edilir ve gerekliyse değiştirilir. .(Bkz. PATH ve
CLASSPATH ortam değişkenlerinin değiştirilmesi)

• Unix veya Windows dışındaki bir işletim sistemine TopLink kurmak için;




dil
Yazılım indirilir veya CD-ROM üzerinden açılır.
Yerel dosya sistemi üzerindeki bir dizine sıkıştırılmış olan dosyalar açılır.
CLASSPATH ortam değişkeni kontrol edilir ve gerekliyse değiştirilir.(Bkz. PATH ve
CLASSPATH ortam değişkenlerinin değiştirilmesi)

PATH ve CLASSPATH Ortam Değişkenlerinin Değiştirilmesi


va
TopLink’i kullanmaya başlamadan önce PATH ve CLASSPATH değişkenlerinin değiştirilmesi
gerekir. Eğer Mapping Workbench açıksa, bu değişkenlerin değiştirilmesi esnasında kapatılıp,
değiştirme sonrasında tekrar açılması gerekir.

PATH ve CLASSPPATH değişkenlerinin değiştirilmesi için aşağıda verilen işlemler


ja

uygulanmalıdır.

Windows Ortamı için:

PATH’in başına şunlar eklenir:


w.

<JAVADIR>\bin\
Burada JAVADIR bilgisayarda kurulu olan Java run-time’ın dizinidir.

CLASSPATH’in başına şunlar eklenir:


<INSTALL_DIR>\core\lib\toplink.jar
<INSTALL_DIR>\core\lib\xerces.jar
ww

<INSTALL_DIR>\core\lib\antlr.jar

INSTALL_DIR TopLink’in kurulu olduğu dizindir. (Örneğin:C:\<ORACLE_HOME>\toplink)

Windows dışındaki ortamlar için:

PATH’in başına şunlar eklenir:


<JAVADIR>\bin\
Burada JAVADIR bilgisayarda kurulu olan Java run-time’ın dizinidir.

-7-
CLASSPATH’in başına şunlar eklenir:
<INSTALL_DIR>/core/lib/toplink.jar

m
<INSTALL_DIR>/core/lib/xerces.jar
<INSTALL_DIR>/core/lib/antlr.jar

INSTALL_DIR TopLink’in kurulu olduğu dizindir. (Örneğin: / <ORACLE_HOME>/toplink)

o
Farklı Geliştirme Ortamlarına Göre Yapılması Gereken TopLink Ayarları

Bu bölümde farklı kod geliştirme ortamlarında yapılması gereken TopLink düzenlemeleri


anlatılmıştır.

i.c
Sun JDK ve JRE

TopLink Mapping Workbench’le kullanılmak üzere TopLink kendisi Java Environment 1.3.1_03
içermektedir.

dil
TopLink’i JDK veya JRE’nin farklı bir versiyonunda kullanmak üzere ayarlamak için;
JAVA_HOME’un yeni yüklenen dizini göstermesi için <INSTALL_DIR>’in bir üst dizinindeki
setenv.cmd değiştirilir.

Java için IBM VisualAge


va
TopLink’in VisualAge’le kullanımında uygulamanın geliştirilmesi iki yolla hızlandırılabilir:

• TopLink sınıflarını aktararak (importing)


• TopLink kaynak kodlarını aktararak

TopLink Sınıflarının Aktarılması:


ja

TopLink’i VisualAge içerisinde kullanmak için; TopLink sınıflarının aktarılması gerekir.


TopLink sınıflarını aktarmak için:

• File > Import açılır.


w.

• <INSTALL_DIR>/core/lib’deki toplink.jar dosyası açılır.


• Hedef proje seçilir. Yeni bir proje için projenin adı verilir.
• Finish seçilir.

Bu işlemler VisualAge’e aktarılmak istenen diğer .jar dosyaları için de tekrarlanır.


ww

TopLink Kaynak Kodlarının Aktarılması:

Bir projenin bazı kısımlarını oluşturmak üzere TopLink kaynak kodları VisualAge’e aktarılabilir.

İlgili TopLink kaynak kodlarının aktarılmasından önce, sınıf dosyalarını içeren TopLink .jar
dosyalarının aktarılması gerekir. (Bkz.TopLinkSınıflarının Aktarılması)

TopLink source.jar’ı aktarmak için;

-8-
• File > Import açılır.
• source.jar seçilir.
• <INSTALL_DIR>/core/lib/source.jar dosya adı olarak verilir.

m
• Sınıf dosyalarının değil de java kaynak kodlarını içeren dosyaların aktarıldığını belirtmek
üzere Java Source işaretlenir.
• Aktarılacak olan hedef proje seçilir.
• Finish seçilir.

o
TopLink Kurulumunun Test Edilmesi

i.c
oracle.toplink.tutorials.gettingstarted paketinde yer alan ConnectTest sınıfı derlenir
ve çalıştırılır.

Kurulumu test etmek için:

Uygun veritabanı giriş bilgileri parametre geçirilerek; komut satırından ConnectTest sınıfı
çalıştırılır:
dil
java oracle.toplink.tutorials.gettingstarted.ConnectTest <username> <password>
<database url> <jdbc driver class>

veya
va
Aşağıda görüldüğü gibi uygun veritabanı giriş bilgisini parametre olarak verecek şekilde main()
metodu değiştirilir. Ve sınıf yeniden derlenerek, çalıştırılır:

public static void main(String[] args)

{
ConnectTest test = new ConnectTest();
ja

if (args.length > 0)
test.connect(args[0], args[1], args[2], args[3], args[4]);

else
{
test.connect("<kullanici>","<sifre >",
w.

"oracle.jdbc.driver.OracleDriver",
"jdbc:oracle:thin:@oraserver:1521:orcl";
}
}

Eğer program doğru çalışmazsa, hata mesajına göre, TopLink ayarları kontrol edilmelidir.
ww

-9-
TOPLINK VE VERITABANI
İlişkisel Veritabanları

m
İlişkisel veritabanları; tablolarda ortak özelliklere sahip veri kümelerinin kaydedilmesini sağlar.
Daha sonra bu tablolar arasında çok farklı ilişkiler kurulabilir.

TopLink; uygulamanın kendi nesnelerini bir dizi ilişkisel veritabanına kaydetmesini sağlar.

o
Tablolar, Kayıtlar ve Alanlar

i.c
Çoğu TopLink kavramları ilişkisel veritabanlarının genel bileşenleri olan tablo(table),
kayıt(record) ve alan(field) kavramlardan ortaya çıkar.

• Bir tablo; bir kayıtlar kümesinden oluşmaktadır. Bir ilişkisel veritabanı ise birbiriyle
ilişkili bir yada birden fazla tablodan oluşmaktadır.
• Bir kayıt; tabloda birbiriyle ilişkili olan alanların oluşturduğu tablodaki bir birimdir.

dil
Bir alan ise; bir kayıtta yer alan verinin bir parçasıdır.

Alanlar kayıtlardaki veriyi düzenler. Bir tablo bütün kayıtları için standart olarak alanların
oluşturduğu bir düzen sağlar. Bu düzen hem her alanın tutabileceği veri türünü (string, integer,
float gibi) ve verinin neyi gösterdiğini (çalışan adı, bölüm gibi) belirler.

Aşağıdaki şekil bir işçi tablosunu göstermektedir. Tablodaki her satır bir işçiye ait olan kaydı
va
tutar. Her kolon farklı bir alandır. Bütün kayıtlar için alanların yapısı aynıdır ve her alan farklı
türde veriler tutabilmektedir.
ja
w.
ww

Anahtarlar (Birincil ve Yabancı)

İlişkisel bir veritabanı bir tablodaki kayıtları diğer bir tablodaki kayıtlarla ilişkilendirmek için
anahtarlar (key) kullanır. Bir anahtar; bir tablodaki kayıtları birbirinden ayırt etmeye yarayan bir
yada daha fazla alanın birleşiminden oluşur.

- 10 -
• Birincil anahtar (primary key); bir kaydı biricik olarak belirler. (İşçi ID kolonu gibi)
• Yabancı anahtar (foreign key); bir kaydı başka bir tabloda ayırt etmek için kullanılır.
Yukarıdaki işçi tablosunda her işçi kaydı işçinin ev adresine bir yabancı anahtar referansı içerir.

m
Örneğin Jane Smith ve John Smith aynı ev adresin referans göstermektedirler.

Sıra Numaraları

İlişkisel veritabanında her kayıt biricik olmalıdır. Biricik anahtara sahip olmayan tablolar her

o
kayda ait bir biricik id atamak için sıralamayı (sequencing) kullanabilirler. Örneğin aşağıda
görülen adres tablosunda tutulan kayıtları ayırt etmeye yarayan birincil anahtarlar bir dizi sıra
numarasından oluşmaktadır. Uygulama her yeni kayıt yarattığında; yeni kayıt bir önceki verilen
sıra numarasının bir fazlası olan sıra numarasını alır.

i.c
Tablolarda Birincil ve Yabancı Anahtar İlişkileri

dil
ja va
w.

Java Nesne Modeli


ww

Bir Java nesnesi aşağıdaki bileşenleri içerir:

• Nitelikler (Attributes); integer gibi basit bilgiler veya String, Date gibi Java’ya özgü türde
bilgiler tutar.
• İlişkiler (Relationships); diğer TopLink yetkili sınıflara olan referansları içerir. TopLink
yeteneği olan sınıflar; birer tanımlayıcıya (descriptor) sahiptir ve veritabanında
tutulabilirler. TopLink yetkili sınıflar veritabanında kaydedilebildiği için kalıcı sınıflar
olarak da düşünülebilir.

- 11 -
• Metodlar (Methods); Java ortamında çalıştırılabilir türden davranışları gösterir. Durum
olmayıp sadece davranışarı içerdiği için veritabanında tutulamazlar.

m
Nesneler ve İlişkisel Alanlar Arasındaki Benzerlikler

• Nesneler ve ilişkisel veritabanı alanları şu benzerliklere sahiptir:

• Sınıflar; nesnelerin yapısını tanımladığı gibi tablolar da kayıtların yapısını tanımlar.

o
• Nesneler nitelikler halinde veriyi tuttuğu gibi kayıtlar da alanlar halinde veriyi tutar.
• Kayıtlar; yabancı anahtarlar ile diğer tablolardaki kayıtlara ulaşabildiği gibi nesneler de
ilişkileri kullanarak diğer nesnelere ulaşabilir.

i.c
Nesneleri İlişkisel Veritabanına Kaydetmek

Nesne teknolojisi; ilişkisel veritabanlarını kullanarak modellemeyi zorlaştıran birtakım kavramlar


içerir:


dil
Kalıtım ve Çokçeşitlilik: (Inheritance and Polymorphism) Java’da kalıtım ve çok
çeşitlilik bir uygulamanın birbiriyle ilişkili sınıfların nesneleriyle çalışmasına jenerik bir
şekilde izin verir. Çoğunlukla uygulama hangi sınıfların nesneleriyle çalıştığını bilmez.
Bu şekilde bir soyutlamayı ilişkisel veritabanlarında gerçekleştirmek kolay değildir çünkü
bir tablodaki tüm kayıtlar aynı alan yapısına sahip olmak zorundadır ve yabancı
anahtarlar sadece bir tabloya ayrı olarak referans gösterebilir.
va
• Karışık İlişkiler: (Complex Relationships) İlişkisel veritabanları bire-bir ve birçoğa-b,r
olan yönsüz ilişkileri göstermede iyidir. Buna rağmen, daha karışık, çift yönlü, birçoğa
birçok ilişkileri ilişkisel veritabanlarında göstermek çok daha zordur.

TopLink; tüm bu kavramları ve ilişkileri ele alır:


ja

Genel Java Nesne İlişkileri

İlişkisel veritabanını kullanarak gösterilmesi kolay olanlar:


w.
ww

- 12 -
İlişkisel veritabanını kullanarak gösterilmesi zor olanlar:

o m
i.c
TopLink Tanımlayıcıları (TopLink Descriptors)
TopLink ilişkisel veritabanları ve nesneler arasındaki benzerliğin sağladığı avantajla
tanımlayıcıları kullanır.
dil
Bir tanımlayıcı; bir nesnenin verisinin bir ilişkisel veritabanında nasıl gösterileceğini belirten bir
özellikler kümesidir. Tanımlayıcı; sınıf niteliklerinden tablo kolonlarına eşleştirmeler içerir.
Yani tanımlayıcı bir Java nesnesiyle onun veritabanı gösterimi arasında bir bağlantı kurar.

TopLink Descriptor
ja va
w.
ww

Her TopLink tanımlayıcısına aşağıdaki bilgileri içerecek ilk değerler verilir:

• Tanımladığı Java sınıfı ve bu Java sınıfının nesnelerinin tutulduğu ilgili tablolar


• Tablonun birincil anahtarı
• Alan adları için sorgu anahtarlarının bir listesi
• Nesnenin nitelikleri ve ilişkilerinin tanımı; (Bu bilgi mapping’lerde tutulmaktadır)
• Tanımlayıcının davranışını uyarlamak amacıyla verilen özellikler kümesi

- 13 -
Eşlemeler (Mappings)

• Her tanımlayıcıda yer alan eşlemeler bir nesnenin niteliklerini kaydetme ve geri alma

m
eylemlerini tanımlar. TopLink 2 tür eşleme kullanır:

• İlişkisel eşlemeler diğer TopLink yetenekli nesnelere referans gösterirler.


• Doğrudan eşlemeler nesnenin tablosunda tutulacak her şeyi içerirler.

o
İlişkisel Eşlemeler

• İlişkisel eşlemeler ilişkisel TopLink yeteneğine sahip nesnelerin sahip olduğu ilişkiler

i.c
arasında bağlantı kurarlar. Üç çeşit ilişkisel eşlemeden söz etmek mümkündür:bire-bir,
bire-birçok, birçoğa-birçok. Bire-bire eşlemeler bir sınıftan diğerine olan bağlantıyı
kaydederler. Bire-birçok ve birçoğa-birçok eşlemeler ise diğer sınıflara olan referansların
bir kümesini tutarlar.

Doğrudan Eşlemeler

• dil
Doğrudan eşlemeler nitelikleri tutarlar. 2 çeşit doğrudan eşlemeden söz etmek
mümkündür: Alana doğrudan olan (direct-to-field) ve dönüşüm türü olan (transformation
type). Kullanımı en kolay olan alana doğrudan olan eşlemelerdir. Bunlar nitelikleri
tabloda o alanın (field) doğal formatında tutarlar. Alana doğrudan olan eşlemelerin
desteklemediği nitelikler için ise; dönüşüm türünde olan eşlemeler kullanılır.
va
• Dönüşüm türünde olan eşlemeler ise veriyi doğal Java formatından ilişkisel veritabanınca
desteklenen biçime getirirler. 4 çeşit dönüşüm türü eşlemeden söz etmek mümkündür:
nesne türünde eşlemeler (object type mappings), tür dönüşüm eşlemeleri (type conversion
mappings), bit dizisi haline getirilmiş nesne eşlemeleri (serialized object mappings), ve
dönüşüm eşlemeleri (transformation mappings).
ja

• Tanımlayıcılar ve eşlemeler ile ilgili ayrıntılı bilgiye ileride yer verilecektir.

Veritabanı Oturumları


w.

TopLink’te bir veritabanı oturumu (database session) bir uygulamanın bir ilişkisel
veritabanıyla olan iletişimini gösterir. DatabaseSession sınıfı şu bilgileri tutar:

• Veritabanına giriş ve konfigürasyon bilgilerini tutan Project ve DatabaseLogin


nesnelerini içerir.
• JDBC bağlantısını içeren ve veri tabanına erişimi sağlayan DatabaseAccessor,
ww

nesnesine sahiptir.
• Uygulamanın sahip olduğu bütün sınıflara ait tanımlayıcıları içerir.
• Nesnenin kimlik bilgisini tutan ve bir cache gibi davranan kimlik map’lerini içerir.

Bir uygulama; oturumu, bir veritabanına giriş yapmak, o veritabanıyla ilgili okuma yazma
işlemlerini gerçekleştirmek amacıyla kullanır. Bir oturumun var olma süresi o uygulamayla
aynıdır.

- 14 -
TopLink’i Bir Uygulamada Kullanmak

Tanımlayıcılar yaratıldıktan sonra TopLink oturumuyla birlikte tanımlayıcıları kaydetmek için

m
Java kodu yazılmalıdır. Tanımlayıcılar kaydedildikten sonra; uygulama; veritabanından Java
nesnelerini okumak ve veritabanına Java nesnelerini yazmak için hazır hale gelir.

• Veritabanından nesneleri okumak için; veritabanı oturum nesnesi kullanılır.


• Veritabanına nesneleri yazmak için ise; çalışma nesnesinin bir birimi kullanılır.

o
Transaction’lar

i.c
Transaction; ya hep birlikte yapılan yada hep birlikte yapılması geri alınan veritabanı
işlemlerinin oluşturduğu bir kümedir. Transaction’lar; veritabanına bir nesne eklemek gibi basit
bir işlem olabileceği gibi hep birlikte yapılan yada hepsi birlikte geri alınan karışık işlemlerin
oluşturduğu tek birim de olabilir. Başarılı olamayan transaction’lar; veritabanını eski halinde
bırakarak yok sayılmalıdır.

Çalışma Birimi (A Unit Of Work)


dil
Çalışma birimi; nesne düzeyinde bir transaction tanımlayarak Java nesnelerinde yapılan
değişikliklerle veritabanı transaction’ını birleştiren bir nesnedir. Çalışma birimi; sadece
nesnenin değişen kısmını günleyerek performans olarak da bir artış sağlar. Çalışma birimleri
TopLink’te veritabanına yazmada tercih edilen bir yöntemdir.
va
Java Nesnelerini Yazmak ve Okumak

Oturumlar readObject() metodunu kullanarak veritabanından nesne okurlar. Veritabanı


oturumları writeObject() metodunu kullanarak ise veritabanına bir nesneyi yazarlar (fakat bu
metoda çalışma birimleri kullanıldığında gerek kalmaz ). Bir uygulama; verilen bir sınıfa ait
nesneleri veritabanından okumak için oturumu kullanır. Ve hangi nesnelerin günlenmesi
gerektiğine karar verdikten sonra gerekli değişiklikleri çalışma birimiyle yapar. Değişiklikler
ja

yapıldıktan sonra; çalışma birimi sadece değişen nesneleri veritabanına kaydetmek için kullanılır.

Bu model; çoğu uygulamalar için en uygun performansı sağlar. Okuma performansı oturum
kullanılarak artırılmıştır, çünkü çalışma birimi, değişmeyen nesnelerin kaydını tutmamaktadır.
w.

Yazma performansı da artırılmıştır; çünkü çalışma birimi transaction bilgilerinin bir kaydını tutar
ve bir nesnenin sadece değişen niteliklerini veritabanına kaydeder.

TopLink Mapping Workbench

Toplink Mapping Workbench bir projenin tanımlayıcılarını (descriptor) ve eşlemelerini


ww

(mapping) düzenlemek amacıyla grafiksel bir arayüzü sağlayan ayrı bir programdır.
Tanımlayıcıların geçerli olup olmadığını kontrol etmenin yanında veritabanı şemasını yaratmak
gibi sağladığı avantajlar da vardır.

Toplink Mapping Workbench geliştirme sürecinde Java kodu üretmez çünkü sonradan
tanımlayıcıların değişmesi söz konusu olabilir. Onun yerine tanımlayıcı bilgilerini bir XML
deployment dosyasında tutar. Ve bu daha sonra bir TopLink metoduyla bir Java uygulamasına
okunabilir. Çalışma zamanı uygulamaları (run time) için ise; TopLink, XML dosyasından bir

- 15 -
.java dosyası üretir, böylece çalışma zamanında Toplink Mapping Workbench dosyalarının
kullanılmasına gerek kalmaz.

m
OracleAS TopLink Mapping Workbench; bir OracleAS TopLink projesi yaratır. OracleAS
TopLink’de en önemli nesne metamodeldir.

OracleAS TopLink ortamında OracleAS TopLink Mapping Workbench’in konumu:

o
i.c
dil
va

Toplink Mapping Workbench sınıfları ve tabloları içerecek şekilde verilen bir projeyle ilgili tüm
bilgileri gösterir. Aşağıda program ilk çalıştığında açılan görüntü verilmiştir:
ja
w.
ww

- 16 -
Toplink Mapping Workbench

o m
i.c
dil
va

Tasarım Stratejileri ve İpuçları


ja

TopLink uygulamasının en iyi şekilde tasarlanması için şu adımlar sırayla uygulanmalıdır:


Bir TopLink Uygulaması tasarlamak için;

• Uygulama için nesne modeli yaratılır. Nesneleri eşlemek (mapping) için Oracle9iAS
w.

TopLink kullanmadan önce nesne modeli tanımlanır. Bu çok önemlidir, çünkü sürekli
değişen veya doğru olmayan nesne modelleri için kalıcı eşlemeler (persistent mapping)
tanımlamak zor olur.

• Sınıfların veritabanında nasıl tutulacakları tasarlanır. Sınıfların yaratılan tablolarla


ww

ilişkileri ve her sınıfın bir tabloda nasıl tutulacağı tasarlanır. Ve veritabanı şeması
yaratılır. İlk tabloları yaratmak için Oracle9iAS TopLink kullanılabilir.

• Her sınıf için tanımlayıcıları ve eşlemeleri tanımlamak için Oracle9iAS TopLink Mapping
Workbench kullanılır.

• Veritabanı oturumlarını kullanmak için Java kodu yazılır. Oturumlar; veritabanı


nesnelerini sorgulamak için ve nesneleri veritabanına yazmak için kullanılır.

- 17 -
• Gelişmiş TopLink arayüzlerinden en uygun olanları kullanılarak veya veritabanındaki
nesnelere ulaşmak için özel sorgular yazılarak; uygulama en uygun hale getirilir.

m
Bir TopLink Uygulamasının Geliştirilme Süreci:

o
i.c
dil
ja va
w.
ww

- 18 -
Veritabanı Hususları

m
Bir TopLink uygulaması geliştirirken en önemli kararlardan biri veritabanıyla ilişkili olacak Java
sınıflarının belirlenmesidir. Bazı tasarımcılar öncelikle uygulamanın nesne modelinin
oluşturulması gerektiğini savunur, böylece nesne modeli veritabanı şemasını belirleyecektir.
Ancak nesne modeli oluşturulurken ilişkisel şemanın göz önünde bulundurulması gerekir. Bunun
için birtakım sebepler vardır:

o
1. TopLink’le ulaşılabilir veritabanının tasarımı doğrudan; uygulamanın nesne modeline
bağlıdır.
Nesneler arasındaki ilişkiler, nesnelerin nitelikleri veritabanının oluşturulmasını etkiler.

i.c
Bu iki tasarım doğrudan birbiriyle ilişkilidir ve tasarlanırken birlikte göz önünde bulundurulması
gerekir.

2. Uygulama için verilen tasarım kararları genelde isteğe bağlı olarak yapılır.
Ancak tasarımla ilgili çok önemsiz görünen kararlar performansı çok fazla etkileyebilir.
Bunun göz önünde bulundurulması gerekir.
dil
3. İlişkisel veritabanları uygulamanın tasarımına ciddi sınırlar getirir.
Uygulama tasarımcısı; uygulama tasarımıyla ilgili kararların veritabanının tasarımı
üzerinde neden olabilecek etkilerini göz önünde bulundurarak zamandan kazanabilir.

Bütün bu sebeplerden görüldüğü gibi; uygulamanın tasarımı gerçekleştirilirken veritabanı da göz


önünde bulundurulmalıdır.
va
EŞLEME (MAPPING)
Eşleme; bir uygulamadaki nesnelerin veritabanında tutulan verilerle eşlenmesini sağlar. Bu
bölümde; Oracle Uygulama Sunucusu TopLink tabanlı uygulamalar için nasıl eşlemeler
oluşturulacağı anlatılacaktır.
ja

Genel Eşleme Kavramları

Eşleme üç bileşenden oluşur:


w.

• Eşlenecek olan nesne


• Bir tanımlayıcı(descriptor) veya nesneden veritabanı tablosuna bir dönüştürücü
• Nesnenin saklanacağı veritabanı tablosu/tabloları

OracleAS TopLink daha fazla karışık nesneleri eşlemeye desteklemesine rağmen çoğu OracleAS
TopLink sınıfları; o sınıfta uygun olan verinin türünü tanımlayan tek bir veritabanı tablosuna
ww

eşleme yapar. Verilen sınıftan yaratılan her nesne; o nesnenin verilerini içeren tek bir satıra ve bir
de o nesneyi biricik yapan bir birincil anahtara eşlenir.

- 19 -
Sınıflar ve Nesneler Bir Veritabanı Tablosuna Nasıl Eşlenir?

o m
i.c
Yukardaki çizime göre;
dil
• Veritabanındaki Tablo_X; Sınıf_X’i gösterir.
• Nesne_X1 ve Nesne_X2; Sınıf_X’in nesneleridir.
• Tablo_X’de işaret edilen satırlar; Nesne_X1 ve Nesne_X2’ye karşılık gelir. Diğer satırlar
va
ise Sınıf_X’in nesnelerinden birini gösterir.

OracleAS TopLink; bu eşlemeleri oluşturmak için birtakım araçlar sağlar.


OracleAS TopLink bir metadata modeli tanımlar. Ve bu metadata modelini; nesnelerin ve
sınıfların nasıl tablolara ve satırlara eşlendiğini (ayrıca tabloların ve satırların nasıl nesnelere ve
sınıflara eşlendiğini) tanımlar. OracleAS TopLink; tanımlayıcı içerisindeki metadata’yı nesneleri
ja

okuyan, yaratan, silen, değiştiren SQL ifadeleri oluşturmak için kullanır.

OracleASTopLink 3 düzey bilgiye sahiptir:


w.

Eşlemeler nesne niteliklerinin bir veritabanı satırındaki alanlarla nasıl ilişkili olduğunu
tutar.
• Tanımlayıcılar (descriptors); bir sınıfın bir veritabanı tablosuyla nasıl ilişkili olduğunu
tutar.
• Projeler; bir OracleAS TopLink uygulamasını meydana getiren tanımlayıcılar bütünüdür.
ww

OracleAS TopLink Mapping Workbench’in sağladığı arayüz ile modeller ve eşlemeler daha kolay
bir şekilde yaratılabilir. Oracle; mümkün olduğunca projenin bu workbench ile oluşturulmasını
önerir.

OracleAS TopLink Mapping Workbench’in sahip olduğu önemli özelliklerden biri de; projeden
deployment dosyalarını oluşturabilmesidir. Bunlar isteğe bağlı olarak XML dosyaları veya Java
kaynak kodları şeklinde yaratılabilir. OracleAS TopLink çalışma zamanında bu XML dosyalarını
okuyarak uygulamayı düzenler. Bu XML dosyaları sayesinde; Java kodunun her seferinde
yeniden derlenmesine gerek kalmaz; böylece geliştirme süresi azalır. Workbench ile derlenmiş

- 20 -
Java kaynak kodları oluşturulduğunda ise; bunlar XML dosyalarına göre daha hızlı çalışır. Ancak
bunlar; XML dosyalarına göre daha az esnektir.

m
Eğer bir sınıf(alt sınıf) başka bir sınıfla(ata sınıf) ortak özelliklere sahipse; bu sınıf bu özellikleri
kalıtıyor demektir. Aynı durum veritabanı için de geçerlidir. Eğer ortak verilerin tutulması söz
konusu ise; bu durumda veritabanları için de kalıtımdan söz etmek mümkündür. Bu iki tür benzer
görünse de; bunları doğru şekilde eşlemek zordur.

o
OracleAS TopLink bu iki kalıtımı da desteklemektedir. Ve kolaylıkla nesne kalıtımı; veritabanı
tablolarıyla eşlenebilir.

Basit Eşlemeler

i.c
OracleAS TopLink Mapping Workbench grafiksel bir arayüz dahilinde; verilen herhangi bir proje
için özellikleri kümelendirmeyi, eşlemeleri(mapping) ve tanımlayıcıları(descriptor) düzenlemeyi
sağlar. Eşlemeleri yaratmak için OracleAS TopLink Mapping Workbench kullanmak yerine Java
tabanlı API’ler de kullanılabilir. Ancak Oracle mümkün olduğu kadar OracleAS TopLink
Mapping Workbench kullanılmasını önerir.
dil
Her sınıf için olan eşlemeler sınıf tanımlayıcılarında tutulur. OracleAS TopLink; tanımlayıcıları
veritabanından nesne yaratmak ve yeni veya değiştirilmiş nesneleri veritabanına kaydetmek için
kullanır. Tanımlayıcı; verilen sınıfın veritabanından nasıl alınacağını ve verilen sınıfın
veritabanına nasıl kaydedileceğini tutar. Böylece bu bilgiler dahilinde yeni veya değiştirilmiş
nesneler kaydedilebilir.
va
Veritabanı, nesneler ve sınıflar ve tanımlayıcı arasındaki ilişkilerin tamamı OracleAS TopLink
metadata modelini oluşturur.

OracleAS TopLink Metadata Model:


ja
w.
ww

- 21 -
Doğrudan eşlemeler, ilişkisel eşlemeler, çok tablo üzerinde yapılan eşlemeler gibi çok farklı
eşlemelerden söz etmek mümkündür. Ancak eşlemelerin çok geniş kapsamlı olması nedeniyle
burada sadece doğrudan eşlemeler üzerinde durulacaktır.

m
Doğrudan Eşlemeler
Doğrudan eşleme; basit türler için veya JDK sınıfları gibi kalıcı olmayan sınıfları eşlemek için
kullanılır. Örneğin bir String niteliğini VARCHAR alanına eşlemek için alana doğrudan eşleme

o
yöntemi kullanılır.

Bütün doğrudan eşlemeler isteğe bağlı olarak setGetMethodName() and setSetMethodName()


mesajlarını içerir. Bu mesajlar; OracleAS TopLink’in doğrudan niteliklere ulaşmak yerine,

i.c
kullanıcı tarafından tanımlanmış metodlar üzerinden niteliklere ulaşılmasını sağlar.

Alana Doğrudan Eşlemeler (Direct-to-Field Mapping)


Alana doğrudan eşlemeler DirectToFieldMapping sınıfının nesneleridir ve şu bileşenleri
gerektirir:



dil
setAttributeName() mesajı tarafından kurulmuş eşlenecek olan nitelik
setFieldName() mesajı tarafından kurulmuş, niteliğin değerinin kaydedileceği alan

Descriptor sınıfı yeni bir DirectToFieldMapping yaratan, nitelik ve alan adlarını kuran ve
tanımlayıcıyla birlikte eşlemeyi kaydeden; addDirectMapping() metodunu sağlar.
va
İki farklı yolla alana-doğrudan eşleme yapılabilir:

• Bir nitelik bir alana eşlenebilir.


• Birden fazla nitelik tek bir alana eşlenebilir(aynı alanın farklı görüntülerini yaratmak
için).
ja

a) Tek Nitelik Eşleme:

Örnek1:

Java’da alana doğrudan eşleme yapmak ve bunu tanımlayıcıyla kaydetmek için şu işlemler
w.

yapılabilir:

// Yeni bir eşleme yarat ve bunu tanımlalyıcıyla kaydet


DirectToFieldMapping mapping = new DirectToFieldMapping();
mapping.setAttributeName("sehir");
mapping.setFieldName("SEHIR");
ww

descriptor.addMapping(mapping);

Örnek2:

Metod erişimi kullanan bir eşleme yaratmak için şu işlemler yapılabilir:

- 22 -
// Yeni bir eşleme yarat ve bunu tanımlalyıcıyla kaydet DirectToFieldMapping
mapping = new DirectToFieldMapping();

m
mapping.setAttributeName("sehir");
mapping.setFieldName("SEHIR");
mapping.setGetMethodName("getSehir");
mapping.setSetMethodName("setSehir");
descriptor.addMapping(mapping);

o
b)Aynı Alana Birden Fazla Nitelik Eşleme:

i.c
Bir alana birden fazla nitelik eşlenirken; bazı eşlemelerin sadece okunur olduğuna dikkat
edilmesi gerekir. OracleAS TopLink bütün sadece okunur eşlemeler için son yazılabilir
eşlemelerin niteliğinin veri türünü kullanır. Son’dan kasıt; eşlenen sınıfta niteliklerin tanımlanma
sırasına göre en son tanımlanan nitelik olmasıdır.

Örneğin aşağıda verilen sınıf için aynı veritabanını ifade eden ama iki farklı görüntüye sahip
dil
eşlemeler yapılmak istenebilir. Örneğin nitelik1 için veritabanı alanını bir tamsayı olarak
göstermesi istenirken, nitelik2 için aynı veritabanı alanını bir ondalıklı sayı olarak göstermesi
istenebilir. Ayrıca bu istenenlere ek olarak bir de; nitelik1’in yazılabilir olması istenirken;
nitelik2’nin sadece okunur nitelikte olması istendiğini varsayalım.

Örnek: EşlenecekSınıf Tanımı


va
public class EslenecekSınıf
{
private String ad;
private long id;
private int nitelik1;
private double nitelik2; //Sadece-Okunur
ja

...
}

Her iki niteliğin de veritabanında EşlenecekSınıf adlı tablonun SAY_GORUNTU adlı kolonuna
eşleneceği varsayılırsa; projenin (proje.xml) veritabanı eşleme öğeleri aşağıdaki gibi belirlenir.
w.

Örnek: proje.xml Veritabanı Eşleme Öğeleri

<database-mapping>
<attribute-name>nitelik1 </attribute-name>
<read-only>false</read-only>
<field-name>EslenecekSınıf.SAY_GORUNTU</field-name>
ww

<type>oracle.toplink.mappings.DirectToFieldMapping</type>
</database-mapping>

<database-mapping>
<attribute-name>nitelik2</attribute-name>
<read-only>true</read-only>
<field-name>EslenecekSınıf.SAY_GORUNTU</field-name>
<type>oracle.toplink.mappings.DirectToFieldMapping</type>
</database-mapping>

- 23 -
Yukarda görüldüğü gibi; ilk olarak nitelik1 EslenecekSınıf tablosunun SAY_GORUNTU alanına
yazılır olarak (writable) eşlenmiş, daha sonra ise nitelik2 aynı alana sadece-okunur olarak
eşlenmiştir.

m
Eğer veritabanı EşlenecekSınıf.SAY_GORUNTU değeri 3.141 olan bir kayıt ile günlenirse
EşlenecekSınıf’ın bir nesnesini elde etmek için readAllObjects() kullanılır. Bununla ilgili bir
örnek aşağıda verilmiştir.

o
Örnek: EşlenecekSınıf Türündeki Nesneleri Okumak

Session oturum = SessionManager.getManager().getSession("test");


Vector v =oturum.readAllObjects(EşlenecekSınıf.class)

i.c
Geri dönen nesnede nitelik1’in değeri 3, nitelik2’nin değeri ise 3.141 yerine 3.0 olacaktır. Son
yazılır eşlemenin veri türü bu örnekte integer olduğu için ve OracleAS TopLink de son yazılır
eşlemenin veri türünü esas aldığı için bundan dolayı olan bir veri kaybı ortaya çıkmıştır.

Bu durumda aşağıdaki iki seçenekten biri uygulanabilir:


iyileştirmesi kaldırılabilir.
dil
DatabaseLogin.setShouldOptimizeDataConversion(false) ile veri dönüşümü

En yüksek değerli olan nitelik yazılır olarak eşlenebilir.

Bu durumda tasarım aşağıdaki gibi nitelik1 sadece-okunur, nitelik2 ise yazılır şekilde eşlenerek
değiştirilebilir:
va
<database-mapping>
<attribute-name>nitelik1</attribute-name>
<read-only>true</read-only>
<field-name>EslenecekSınıf.SAY_GORUNTU</field-name>
<type>oracle.toplink.mappings.DirectToFieldMapping</type>
</database-mapping>
ja

<database-mapping>
<attribute-name>nitelik2</attribute-name>
<read-only>false</read-only>
<field-name>EslenecekSınıf.SAY_GORUNTU</field-name>
<type>oracle.toplink.mappings.DirectToFieldMapping</type>
w.

</database-mapping>

Tür Dönüşüm Eşlemeleri (Type Conversion Mapping)

Tür dönüşüm eşlemeleri ve TypeConversionMapping sınıfının nesneleri aşağıdaki adımların


ww

uygulanmasını gerektirir.

• Eşlenen nitelik setAttributeName()mesajı ile günlenmelidir.


• Niteliğin değerinin kaydedileceği alan setFieldName()mesajı ile günlenmelidir.
• Nitelik ile kaydedilen Java türü setAttributeClassification()mesajı ile
günlenmelidir.
• Yazılacak veritabanı türü setFieldClassification()mesajı ile günlenmelidir.

- 24 -
Örnek: Bir Tür Dönüşüm Eşlemesi Yaratmak ve Tanımlayıcı ile Kaydetmek

// Yeni bir eşleme yarat ve tanımlayıcıda kaydet...

m
TypeConversionMapping typeConversion = new TypeConversionMapping();
typeConversion.setFieldName("GUN");
typeConversion.setAttributeName("randevuTarihi");
typeConversion.setFieldClassification(java.sql.Date.class);
typeConversion.setAttributeClassification(java.util.Date.class);
descriptor.addMapping(typeConversion);

o
Nesne Türü Eşlemeler

i.c
Nesne türü eşlemeler ObjectTypeMapping sınıfının nesneleridir ve şu adımların uygulanmasını
gerektirir:

• Eşlenen nitelik setAttributeName()mesajı ile günlenmelidir.


• Niteliğin değerinin kaydedileceği alan setFieldName()ile günlenmelidir.

dil
Bir dizi değer ve onların dönüşümleri addConversionValue()ile eklenmelidir.

Örnek: Bir Nesne Türü Eşleme Yaratmak ve Tanımlayıcıyla Kaydetmek

// Yeni bir eşleme yarat ve onu tanımlayıcı ile kaydet...


ObjectTypeMapping typeMapping = new ObjectTypeMapping();
va
typeMapping.setAttributeName("cinsiyet");
typeMapping.setFieldName("CINSIYET");
typeMapping.addConversionValue("E", "Erkek");
typeMapping.addConversionValue("K", "Kadin");
typeMapping.setNullValue("K");
descriptor.addMapping(typeMapping);
ja

Serialization ve TopLink

OracleAS TopLink; nesneleri bir Java sanal makinesine yazıp diğer bir Java sanal makinesinden
w.

okumayı sağlayan Java serialization’ destekler. Nesneleri taşımak için yapılan hazırlık işlemine
marshalling, nesneleri geri alma işlemine ise unmarshalling denir. Bir OracleAS TopLink
uygulamasında serialization; bir OracleAS TopLink uygulaması bulunan bir Java sanal makinesi
ile üzerinde bir OracleAS Toplink uygulaması bulunmayan bir Java sanal makinesi arasında
gerçekleşir. Üzerinde bir OracleAS TopLink uygulaması bulunan bir Java sanal makinesine bir
nesne gönderirken ise serialization işlemi yerine uzaktan oturum başlatılması önerilir.
ww

Kalıtım ve TopLink

Kalıtım; nesneler arasında birtakım özelliklerin paylaşılmasına imkan verir. Bu yolla; alt sınıflar
diğer ata sınıflardan bazı özellikleri kalıtabilirler. OracleAS TopLink bu kalıtım ilişkilerinin
korunması için çok farklı yöntemler sunar ve bir süper sınıfta belirtilen eşlemeleri tekrar

- 25 -
yazmaya yada süper sınıfta eşlenmemiş olan nitelikleri eşlemeye imkan verir. Alt sınıflar birincil
anahtar için ata sınıfları ile aynı veritabanı alanlarına sahip olmalıdır. Ancak her iki tabloda
birincil anahtar adları farklı olabilir.

m
Sonuç olarak; ayrı bir tabloda kaydedilmiş olan ilişkileri bir alt sınıfa eşlemek için, alt sınıf
birincil anahtarı ata sınıfından farklı olsa bile, ata sınıfının birincil anahtarını içermek zorundadır.

OracleAS TopLink Projesinin Düzenlenmesi

o
OracleAS TopLink projeleri, tanımlayıcıları, eşlemeleri genelde OracleAS TopLink Mapping
Workbench ile yaratılır. OracleAS TopLink Mapping Workbench’in çıktısı; veritabanında kalıcı

i.c
olan nesneleri saklamak için gerekli olan eşleme bilgilerini içeren bir XML dosyasıdır.

OracleAS TopLink Mapping Workbench proje üzerinde bir değişiklik yapıldığında; o projeyi
oluşturan tüm tanımlayıcılara erişmeyi tercih etmez. Bu gibi durumlarda; eşleme bilgilerini
değiştirmek için yüklenme zamanında (deployment time) çalıştırılacak bir düzeltme/değişiklik
metodu (amendment method) tanımlanır. Her OracleAS TopLink tanımlayıcısının bir düzeltme
metodu olabilir.
dil
OracleAS TopLink Tanımlayıcılarını Düzeltme Metodlarıyla Değiştirmek

Düzeltme metodları (amendment methods) yükleme zamanında çalıştırılabilir statik metodlardır


ve tanımlayıcı kodunun değiştirilmesini sağlar. Herhangi bir sınıfa ait tanımlayıcı dosyası ilk
yaratıldığında bir düzeltme metoduyla değiştirilebilir. Örneğin CMP için (container-managed-
va
persistence) bu olay; varlık bean’lerinin (entity) ilk olarak EJB sunucusuna yüklendiği anda
gerçekleşir.

Yükleme Sonrası Metodları Kullanmak

Bazı OracleAS TopLink özellikleri OracleAS TopLink Mapping Workbench ile düzenlenemez.
ja

Bu özellikleri kullanabilmek için; tanımlayıcı, projenin bir parçası olarak yüklendikten sonra
düzenlenir. Yükleme sonrası metodları (after load methods) proje nesnesi yaratıldıktan sonra
koddaki tanımlayıcıları değiştirmek için kullanılan bir tür düzeltme metodlarıdır.
w.

Proje veya oturum nesnesinden tanımlayıcılara ulaşmak için; tek bir parametre olarak sadece
tanımlayıcının adını alan bir Java metodu yazmak gerekir. Bundan sonra tanımlayıcılara mesajlar
yollanarak istenen özellikler değiştirilebilir.

Yükleme sonrası metodlarını oluşturmak için aşağıdaki API’ler kullanılabilir:


ww

• project.getDescriptors();
• session.getDescriptors();
• sessiom.getDescriptor(Class domainClass);

- 26 -
Tanımlayıcı Olayları (Descriptor Events)

Tanımlayıcı olay yöneticisi (descriptor event manager), uygulamadaki diğer olayları tetikleyen

m
yeni olaylar yaratılmasını sağlar. Olay Yöneticisi (Event Manager), OracleAS TopLink
veritabanından bir nesne okuduğunda, veritabanındaki bir nesneyi günlediğinde, veritabanına bir
yazma veya silme işlemi yaptığında özel olayların oluşturulmasını sağlar.

Tanımlayıcı olayları şunlara imkan verir:

o
• Kalıcı nesnelerin diğer sistemlerle, servislerle ve çatılarla (framework)
senkronizasyonunun sağlanmasına imkan verir.

i.c
OracleAS TopLink’in varlığından haberdar olmadığı kalıcı nesnelerin devamını sağlar.
• Bir nesnenin kalıcı durumunun değişmesini uygulamadaki diğer nesnelere duyurur.
• OracleAS TopLink eşlemelerinin desteklemediği karışık eşlemeleri yaratmaya imkan
verir.

Diğer tanımlayıcı olayları OracleAS TopLink Mapping Workbench’de tanımlanabilir.

dil
Java ile EJB Projeleri ve OracleAS TopLink Tanımlayıcıları Yaratmak

Öncelikle OracleAS TopLink Mapping Workbench’de yaratılamayan eşlemeler ve OracleAS


TopLink tanımlayıcıları yaratılır.

Java kodu ile bir proje tanımlamak için;


va
• oracle.toplink.sessions.Project sınıfını extend eden bir proje sınıfı yaratılır.
• Proje sınıfı derlenir.
• project-class öğesi proje sınıf adını içerecek şekilde toplink-ejb-jar.xml yükleme
tanımlayıcısına (deployment descriptor) yazılır.
ja

Aşağıdaki örnek bir OracleAS TopLink projesinin kod üzerinde nasıl belirtileceğini
göstermektedir:

/**
‘Ogrenci’ adlı sınıf; Java kodunda tanımlanmış bir OracleAS TopLink projesi
w.

ornegidir. Projenin Login ve tanımlayıcılar gibi özel kısımları constructor


tarafından çağrılan metodlar içerisine yazılmıştır.

‘Ogrenci’ adlı sınıf oracle.toplink.sessions.Project sınıfını extend


etmektedir.
**/
ww

public class Ogrenci extends oracle.toplink.sessions.Project{

/**
Projenin tüm ilk değer atamalarını gerçekleştirmek için bir sıfır argumanlı
contructor tanımlanmıştır.
**/

public Ogrenci(){
projeDuzenle();

- 27 -
sistemeGiris();
adresTanımlayıcısıYarat();
OgrenciTanımlayıcısıYarat();
//projenin tüm tanımlayıcılarının yaratılması için gerekli olan diğer

m
//metodlar

protected void projeDuzenle(){


setName("Ogrenci");
}
protected void sistemeGiris()

o
{
oracle.toplink.sessions.DatabaseLogin login=
new oracle.toplink.sessions.DatabaseLogin();

i.c
// Kullanılan veritabanına uygun platformu seç.
login.setPlatformClassName( "oracle.toplink.internal.databaseaccess.
OraclePlatform");

// eger sıralama kullanıldıysa, setLogin() kullanmak yeterli olacaktır.


setLoginAndApplySequenceProperties(login);
}

/**
dil
* Tanımlayıcılar tablo bilgilerini tanımlayarak, caching gibi birtakım
özellikleri düzenleyerek ve eşlemeleri ekleyerek yaratılır.
*/
protected void Ogrenci() {
oracle.toplink.publicinterface.Descriptor tanımlayici=
new oracle.toplink.publicinterface.Descriptor();
}
va
// TANIMLAYICI
// Kalıcı yapılacak olan sınıf belirtilir.
tanımlayici.setJavaClass(examples.ejb.cmp11.advanced.EmployeeBean.class);

// birincil anahtari ve kullanilacak tablolari tanimlar


Vector tablolar= new Vector();
tablolar.addElement("EJB_OGRENCI");
ja

tanimlayici.setTableNames(tablolar);
tanimlayici.addPrimaryKeyFieldName("EJB_OGRENCI.OGR_ID");

// OZELLIKLER
tanimlayici.setIdentityMapClass(
w.

oracle.toplink.internal.identitymaps. FullIdentityMap.class);
tanimlayici.setExistenceChecking("Check cache");
tanimlayici.setIdentityMapSize(100);

// KOPYA POLITIKASI (COPY POLITICY)


tanimlayici.createCopyPolicy("constructor");

// ORNEK POLITIKASI (INSTANTIATION POLICY)


ww

descriptor.createInstantiationPolicy("constructor");

// ALANA DOGRUDAN ESLEME (DIRECTTOFIELDMAPPING)


oracle.toplink.mappings.DirectToFieldMapping adEsleme=
new oracle.toplink.mappings .DirectToFieldMapping();
adEsleme.setAttributeName("ad");
adEsleme.setIsReadOnly(false);
adEsleme.setFieldName("EJB_OGRENCI.AD ");
tanimlayici.addMapping(adEsleme);

- 28 -
// Diger eklemeler de ayni sekilde addMapping() metodu kullanilarak //eklenir.
},}

m
KAYNAKLAR

Yararlanılan Internet Siteleri

o
• www.oracle.com
• http://www.mid.main.vsu.ru/docs/iAS/toplink.903

i.c
Elektronik Kitaplar

• Oracle Application Server TopLink - Getting Started Guide


By Jacques-Antoine Dubé

By Rick Sapir


dil
• Oracle® Application Server TopLink - Mapping Workbench User’s Guide

Build Superior Java Applications with Oracle Application Server 10g TopLink
ja va
w.
ww

- 29 -

You might also like