Adres defteri

İyi ki adres defteri var :)
Play Framewok’ün tutorial kısmını okumuştum geçen hafta fakat okumakla olmuyor öğrenme eylemi tabi, uygulama yapmak lazım. Uygulamam Adres Defteri olacaktı. Ki böylece kafamdaki havada kalmış bilgi baloncuklarını sabitleyecektim.
Nasıl Başladım? Öncelikle Umut abi, uygulamamı bir yere bakmadan yapmaya çalışmamı söylemişti. Öncelikle adres defteri için bir tablo tutmam lazımdı. Yani çalışmaya app/models altında başlayacaktım. Buraya User.java adında bir dosya oluşturdum ki bu aslında bizim tablomuz. İçine de tablonun sütunlarını tanımlamamız gerekiyordu : name, surname,tel, adress gibi alanları User sınıfı içinde ilklendirdim. Bu arada dosya ismi ile sınıf isminin aynı olması gerekiyor ve sınıf adı aslında tablo adı olacağı için ilk harfinde büyük harf kullanmalıyız. Class’ı oluştururken extends Model de yazmamız gerekiyor. Bunun bir model olduğunu belirtmemiz için de bu satırın başına @Entity annotation koymalıyız. Bunu koymayı unutarak daha önce bir hataya düşmüştüm, unutmam artık herhalde. Şimdi şöyle bir modelim oldu elimde :
user.java

Ve kaldım.. ee sonra napıyorduk? :) Okumuştum biliyordum ama sıradaki işlemi kestiremiyordum. Fehmi abinin sitesindeki videoyu izleyerek devamını getirdim. Ama uygulama yine çalışmıyordu.Ertesi gün Fehmi abi ile hatalarıma baktık, yanlışlarımı düzeltti ve düzeltirken kısa kısa anlatıyordu da. Ondan sonra o havada kalan baloncukları yere bağlamış oldum işte.
Sonraki adımda app/controllers altında Application.java içine uygulama da kullanacağımız ekle, sil gibi action’ları tanımlıyoruz. Burada dikkat etmemiz gereken husus, oluşturduğumuz actionların tipinin public static void olması.

Üçüncü aşamada yazdığımız action’ların route’larını tanımlamamız gerekiyor ki HTTP ile alışveriş içinde olsun. Bunu da conf dizini altındaki routes kısmından düzenliyoruz. Bu işlemi action’ın işlevine göre GET, POST, DELETE yada benim uygulamamda kullanılmayan PUT methodlarını kullanarak düzenliyoruz.
routes

Hazır conf dizini altına gelmişken application.conf dosyasında yapıcağımız değişikliği de hatırlatıyım. Uygulamamızın bir veritabanına ihtiyacı var biliyorsunuz. Play de kendi içindeki in-memory veritabanı kullanıyordu. Aslında kullanacağımız sanal veritabanı yapısını aktif etmemiz gerek. Bunun için db=mem satırını komentini kaldırıyoruz.

db

Burda sanal veritabanı kullanmamızın sebebi uygulamamızı dev modda açmamız idi. Uygulama geliştirme yaptığımız için kalıcı ya da büyük bir veritabanına gerek yok ve bu yüzden veritabanını in-memory kullanıyoruz yani bellekten yani uygulamayı kapattığımız anda veritabanındaki veriler siliniyor, bilgilerimiz kalıcı olmuyor. Play Framework de uygulama yaparken kullandığımız diğer mod ise production mode. Bu modu üretim yaptığımızda, ürün hazır olduğunda kullanıyoruz. Production modu seçtiğimizde modu prod olarak alıyoruz. Bunun ayarlarını da conf/Application.conf içinde, şu satırlardan yapabiliriz.

mode

Veri tabanı hazır, tablolar, routelar hazır, fonksiyonları da oluşturduk geriye ne kalıyor? Bu uygulamayı kullanıcıya göstermek, yani? view katmanına geçiyoruz burada da view/Application altındaki index.html içindeki değişikliklerimizi yapınca uygulamamız hazır oluyor.

GitHub'dayım