EclipseLink – 01 – Hello Entity

Merhaba Arkadaslar,
Bu bolumde Entity kavramini ve Entity’lerin karakteristik ozelliklerini inceleyecegiz.

Entity

Entity , veri yonetimi/data management konusunda yeni bir kavram degildir. Entity kavrami Java dilinden bile eski bir kavramdir. Ilk defa Peter Chen tarafindan Entity-relationship modeli olarak 1976 yilinda taniltilmistir.

Entity , turkce olarak varlik kelime anlamini ifade eder , fakat varlik kavrami JPA (Java Persistent API ) konusunda anlatmak istedigimiz kavrami karsilamayacaktir.
Entity kavramini “kalici nesne / persistent object” ifadesi daha dogru sekilde karsilayacaktir.

Persistability
Entity’lerin en onemli ozelligi persistable ( kalici hale getirilebilirlik / devamli hale getirilebilirlik) olma ozelligidir.

Bunun anlami Entity’in durumu/state (instance variable) kaydedilebilir(store) ve daha sonrasinda bu Entity’e ulasilabilir.

Identity
Entity , veritabanina kaydedildiginde (store) bir unique/essiz/tekil identity/kimlik bilgisi olmalidir. Persistent identity ya da identifier ayni tipteki Entity’leri birbirinden ayirmak icin kullanilan anahtardir , yani primary key bilgisidir.

Transactionality
Transaction , turkce kelime karsiligi olarak islem anlamina gelmektedir. Bununla birlikte turkce karsilik olarak islem diyerek gecmemiz biraz kafa karisikligina neden olabilir , cunku daha cok Process kelimesinin karsiligi olarak islem kelimesini kullaniriz.

Transaction kavramini anlamak icin su yazimi inceleyebilirsiniz burada tekrar ayni kavramlari yazmayacagim ;
Spring – 24 – Transaction – 01

Entity , transactional ozellige sahip olmalidir. Veritabanina yapacagimiz insert , delete , update gibi islemler bir transaction context’i icerisinde olmalidir. Her sey yolundaysa islem basariyla commit edilmeli aksi durumda roll-back yapilmalidir.

Granularity
Granularity kelime anlami olarak “tanecikli olma ozelligi” , “ortalama oge boyu” gibi anlamlara gelmektedir. Burada ikinci anlam granularity ozelligini nispeten daha cok karsilayacaktir.

Javada primitive type disinda diger tiplerin hepsi reference type’tir. java.lang.String sinifi ya da primitive tiplerin wrapper siniflari ( Ornegin java.lang.Integer ) gibi tipler de reference type’tir.

String sinifini/objesini dusundugumuzde domain-specific ( etki alanina ozgu) bir cagrisim yapmaz.  String , Entity olmak icin fazla fine-grained ( ince taneli)  bir yapiya sahiptir. String , Entity yerine Entity attribute (ozelligi) olmaya uygundur.

Entity’ler business domain object ozeligi gosterirler ,uygulama (application) icin ozellesmis/specific bir anlami vardir. Ornegin String ya da Integer kavramlari kafamizda bir business domain kavrami olusturmaz fakat bir kutuphane uygulamiz oldugunu dusunelim ve bu uygulamadaki Book , Author , Publisher gibi kavramlar business domain object kavramini karsilayacaktir.

Entity’ler elle tutulur gozle gorunur bir buyuklukte , “ortalama oge boyu” , olmalidir yani String Integer ya da anlamsiz bir kavram degil business domain object ozelligi gostermelidir ve farkli Entity’lerle iliski (relation) icinde olmalidir.

JPA specification/belirtim/sartname’ye bakarsak Entity icin su tanimi gorebiliriz;

An entity is a lightweight persistent domain object.

Entity’lerimiz POJO siniflarimizdir. Yukarida bahsetmedigimiz lightweight kavramidir. lightweight kavrami turkce karsilik olarak onemsiz , hafif gibi anlamlara gelmektedir.

Lighweight kavrami POJO sinifimizda az kod olmasi anlaminda degildir , kod degisikligi olarak minimum duzeyde etki yapmasi ya da minimum duzeyde kod degisikligi yapmak anlamina gelmektedir.

Yazimi burada sonlandiriyorum.
Herkese Bol Javali Gunler dilerim.
Be an oracle man , import java.*;
Levent Erguder
OCP, Java SE 6 Programmer
OCE, Java EE 6 Web Component Developer

Print Friendly, PDF & Email

Leave a Reply

Your email address will not be published. Required fields are marked *