Merhabalar, bu yazdımda başlıktaki terimler üzerine yazacağım. Öncelikle temel amaç java ve veritabanı arasındaki ilişklileri daha iyi anlamak, ilerde görebileceğimiz terimlerin olduğu hakkında ufak bilgi sahibi olmak. Gelelim terimlerimize:
DAO(Data Access Object): Genellikle veri tabanı üzerinde yapılacak işlemleri yüklenen sınıflardır. DAO içine database işlemlerimizi yazıp programda karışıklık ve tekrar tekrar kullanmanın(code reuse) önünü açarız. Örneğin:
public class UserDAOService{
public boolean addUser(){
// some magic here
}
... // some magic here
}
UserDAOService sınıfımız artık tüm user işlemlerini yükleniyor. Gidipte başka işlemler yaptığımız kod parçacıkları arasına SQL komutları sıkıştırıp işimizi zorlaştırmayacağız.
DTO(Data Transfer Object): Adından anlaşılacağı üzere bu objeler katmanlar, birimler arasında sadece veri aktarımı için kullanılırlar. (DB ve JVM arasında örneğin , JVM-JVM arasında)
- Depolama dışında herhangi bir yükümlülükleri yoktur.
- Setter/getter kullanmına gerek yoktur. Tüm veriler public olarak tutulabilir.
JavaBean: JavaBean dediğimiz objeler veri tutma amaçlı kullanılırlar. Bir objenin JavaBean olarak sayılabilmesi için 3 şartı sağlaması gereklidir.
- Serializable olmalı.
- Parametresi yapıcı metodu olmalı.(No parameter constructor)
- Public setter/getter metodlarına sahip olmalı
Teknolojinin gelişmesiye verilerimizi artık dosyalarda(text dosyasında örneğin) değilde veri tabanları üzerinde tutuyoruz. Bunun için Serializable olarak implement etme yöntemi pek kullanılmıyor. Bu durumlarda Bean/POJO kullanımı daha yaygın görülür.
POJO/Bean(Plain Old Java Object): Bu obje de veri depolamak için kullanılırlar. JavaBean den farklı herhangi bir zorlamaya sahip değildir. Örneğin kullanıcı bilgilerini tutacağımız bir objeye UserBean diyebiliriz.
public class UserBean{
private String name;
private String password;
public UserBean(){} // no parameter constructor
// add other constructors
public String getName(){return name;}
public void setName(String name){this.name = name};
// some magic here
}
Terimleri olabildiğince açık anlatmaya çalıştım. Özellikle java tabanlı projelerde bu isimleri yada paketleme isimlerini bolca görmekteyiz. Benim artık uyguladığım paketlemeler ise şu şekilde:
com.hasanmen.app.dao -> tüm daolar burada
com.hasanmen.app.bean -> tüm bean classları burada
...
Böylelikle hem karışmaları engelleriz. İstediğimizi daha çabuk ayırt ederiz hemde kod tekrarlarının önüne bir nebze geçmiş oluruz.