13 Ağustos 2016 Cumartesi

DTO, DAO, POJO/Bean ve JavaBean Nedir Nerelerde Kullanılır?

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)

  1. Depolama dışında herhangi bir yükümlülükleri yoktur.
  2. 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.

  1. Serializable olmalı.
  2. Parametresi yapıcı metodu olmalı.(No parameter constructor)
  3. 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.


9 Ağustos 2016 Salı

32Bit Yaz Stajı

Merhabalar arkadaşlar bu yazımda yaz stajımın nasıl geçtiğini anlatacağım.


Öncelikle 32Bit firması Tübitak MAM Teknoketinde JEE, Entegrasyon, Mobil uygulama gelişirme gibi birçok alanda çalışmalar yürüten bir kurum. Tercih etmemdeki en büyük etken okuduğum okula(This is GTÜÜÜÜ) ve yurda yakın olmasıydı.

Başvuru ve Mülakat: İnternet sitesi üzerinden CV yollarak başvuruda bulundum. Açıkçası 3. ve 4. sınıflara öncelik verirler diye olumlu bir haber beklemiyordum ama 1-2gün geçmeden 32Bit İnsan kaynaklarından mail gelmişti. Mülatak için gelmemi istemiştiler. Belirtilen zamanda gittim. İlk mülakat görüşmem olduğu için heyecan vardı. Genel olarak CV üzerine yazdığım dersler hakkında sorular soruldu. Daha sonra tahtada 3tane soru vardı ve bunları herhangi bir dilde yazmamızı istedi. O aşamayıda geçtik. İkinci bir aşama olarak verilen bir projeyi yamamız gerekliydi. Daha sonra projeyi yapanlar arasında eleme olacak staj başlıyacak.

Yaptığım projeye buradan erişebilirsiniz.

Bu arada yaz döneminde her ay staj programı var.

Staj Başlangıcı: 
Staj sorumlumuz olarak Burak abi bize yardımcı olacakmış. Staj döneminde neler yapılacağını karalaştırdık. Tüm stajda yapılanları anlatmam çok uzun sürer ama Staj defterimi daha sonra paylaşacağım. Kısaca:

1.Hafta - Kurulumlar ve Java SE
Linux, MySQL, SQuireL, Tomcat, Eclipse-Mars, Sublime ve daha birçok uygulama. İlk hafta özetle kurulumlar ve ardından SQL çalışmalarıyla geçti. Yeni yeni terimler öğrendim.

2.Hafta - Java WEB
Bu hafta artık Tomcat Server üzerine servletler ile çalışmalar yaptık. Bean, DAO, DTO gibi terimleri öğrendik. ContextListener falan filan. Çok yoğun çook.

3.Hafta - JavaScript
Loglamalar, datasource üzerinde çalışmalar yaptık ve sonradan JS, JQuery, Bootstrap ile arayüz oluşturmaya yönelik çalışmalarla devam ettik.

4.Hafta - JavaWEB Extra
Jersey Service, JSON, Ajax ve web güvenliği üzerine çalışmalar yürüttük.

Ve daha bir sürü şey. Çok yoğun bir staj programı var. Ve 4hafta bitince staj bitmiyor. Birde bitirme projesi oluyor. Buda stajda öğrenilen konuların pekiştirilmesi açısından çok faydalı.

Evet dediğim gibi şuan staj projemiz üzerinde çalışıyoruz. 2 kişi yapıyoruz şuan projeyi. Ben ve Sinem(takım arkadaşım, kendisi İTÜ lü, çok iyi biridir, hey mate :D).

Projeyi yapıp bitirdikten sonra sunarak defteri imzalatıyorsunuz ve staj bitiyor.

YEMEKLER VE ULAŞIM:
İstanbul ve Kocaeli'nin her yerine Tübitak servisi var. Ayrıca öğlen yemekhanede çıkan yemeklerde çok güzel. ÖZELLİKLE TATLILAR EFSANE.