Öncelikle cevap için teşekkür ederim. Foreign key'ler ile birbirine bağlanmış tablolar ile DAO ve POJO class'ları oluşturarak küçük çaplı bir şeyler yaptım. Dizayn patternlerden de 12 adet öğrendim ve örnekler yaptım fakat çok fazla olduğu için hangisini ne zaman nerde kullanacağımı şaşırıyorum. Her şeyi kullanarak bir not tutma uygulaması yapmaya çalıştım ve dediğiniz gibi kastırsa da güzel şeyler öğrendim.
Ödevler derken, şunları kullanarak şu amaca ulaş, şunu yap vs. diye sadece ulaşılacak sonucu öğrenip kendi çapımda bir şeyler yapmak istemiştim, bunu kastetmiştim. Aklıma her şeyi kullanacak güzel bir amaç gelmediğinden (şu aşamada), her şeyi bir anda kullandığım zaman amaçsız ve boş bir şey gibi geliyor. O yüzden en azından not tutma uygulaması, bir öğrenci bilgi sistemi tasarlamak gibi fikir veren ödevler veya sınavlar olursa daha iyi olacağını düşündüm.
Bu arada hibernate öğrenmeli miyim? Çok faydasını görür müyüm?
Tekrardan teşekkür ederim.
Evet, Hibernate kesinlikle ogrenmelisin eger Java EE kullanacaksan. Ayrica neden Hibernate gibi bir seye ihtiyac oldugunu, tam olarak neler yaptigini ogrenmek de faydali olur. Aksi durumda sadece framework ezberlemis gibi olursun.
Aklima gelen dizayn pattern kullanabilecegin ve gercekten uygulama gelistirirken isine yarayacak seyler:
- Retry mekanizmasi : Bir methodu @Retry ile annotate edersin, eger method calisirken exception throw ederse methodu calistirmayi bir daha dener. Belirli bir fail limitinden sonra vazgecer. Ornegin bir API'dan veri cekiyorsundur, anlik basarisizlik olur, tekrar denemen gerekir. ( Aspect Oriented Programming yapman gerek bunu halletmek icin )
- SilentCatch: Checked exception throw eden methodu
@Silent diye annotate edersin. Artik o metodu cagiran diger metodlar try - catch yazmak zorunda degillerdir. -> Bunun icin reflection bilmelisin. Ozellikle compiler seviyesinde RetentionPolicy.SOURCE olan annotationlar bu sekilde calisir. ( @Override, @SuppressWarnings etc )
- Proxy : Bir class icerisindeki deger herhangi bir sebepten dolayi degistiginde bundan haberdar olabilecegin bir proxy variable'i yazabilirsin. Ornegin bir POJO class'indaki String field degistiyse bir seyler yapman gerekiyor olabilir. Bunun icin de reflection kullanmali ve proxy patterni ogrenmelisin. Ornegin CGLIB bu sekilde calisiyor.
- DeepEquals -> Girilen 2 objenin tum fieldlari birbirine esit mi kontrol eden bir fonksiyon yazmaya calisabilirsin. Bu digerlerine gore daha basit ama reflection kastirmani gerektirecek bir sey. Array, Set,Map iceriyorsa onlarin da elemanlarini ve sirasini kontrol etmeli.
Bir cirpida aklima gelenler bunlar. Yeri geldiginde hepsi kullanilan seyler, kendini gelistimek icin yapmayi dusunebilirsin.