Welcome

Kotlin ve NPE

Kotlin’in öne çıkan özelliklerinden birisi de uygulama içerisinde null referansların önüne geçmeye çalışmasıdır. Kotlin’in tip sistemi, uygulamalarımızdan NullPointerException hatalarını ortadan kaldırma hedefi ile tasarlanmıştır. Buna “null safety” adı da verilmektedir. Peki NPE hatası Kotlin’de nasıl engelleniyor? Bunun için Kotlin’de tanımlanan değişkenler ve return tipleri varsayılan durumda null değer alamayacak veya dönemeyecek biçimde tanımlanıyorlar. Örneğin, yukarıda […]

Kotlin ve Spring MVC Validations

Kurumsal Java dünyasında pek çok framework ve çözüm, kabiliyetleri ile ilgili metadata tanımlarını Java anotasyonları şeklinde ele almaktadır. Bunlardan birisi de Java Bean Validation spesifikasyonudur. JSR-380 olarak da bilinen bu spesifikasyon ile domain sınıflarındaki validasyon ihtiyaçları Java anotasyonları ile field veya getter metotlar üzerinde tanımlanmaktadır. Çalışma zamanında da uygun bir Validator ile bu sınıflardan yaratılmış […]

Mockito’da Mock ve Spy Nesnelerin Eğitilmesi

Bir önceki yazımızda Mockito kütüphanesinin Kotlin projelerinde kullanılması üzerinde durmuştuk. Bu konuya devam edeceğiz. Ancak bu yazımızda Kotlin özelinden çıkıp Mockito’nun kullanımı ile ilgili daha genel bir konudan bahsetmek istiyorum. Bilgidiğiniz üzere, Mockito kütüphanesi, mock ve spy nesnelerin hedef metotlarının eğitilmesi için iki farklı kullanım biçimi sunmaktadır. Bunlardan ilki, daha sık kullanılan aşağıdaki; “when method […]

Kotlin ve Mockito

TDD ile programlama yapan Java yazılım geliştiricilerin en temel araçlarından birisi de Mockito mock kütüphanesidir. Mockito yardımı ile arayüz ve sınıflardan mock ve stub nesneler oluşturarak, bunları eğittikten sonra test ettiğimiz nesneye enjekte ederek birim testlerimizi gerçekleştiririz. İlk iki yazımızdan sonra Kotlin ile geliştirilen yazılım projelerinde Mockito kütüphanesi ile çalışırken karşılaştığımız en temel problemi sanırım […]

Kotlin ve Spring

Kotlin deneyimlerimi paylaşmaya devam ediyorum. Bu yazımızda da Kotlin ile kurumsal yazılım geliştirirken Spring Framework’ün kullanımından bahsedeceğim. Geçen yazımda da belirttiğim gibi Kotlin’in JVM uyumlu bir dil olması sayesinde mevcut Java kütüphanelerini Kotlin projelerimizde de kullanabiliyoruz. Ancak Hibernate örneğinde olduğu gibi Spring ve Spring Boot Framework açısından da, Kotlin’in varyasılan durumda sınıfları ve metotları final […]

Kotlin ve Hibernate

Bir süredir Udemy’deki microservice çalışmalarımızda programlama dili olarak Kotlin’i kullanıyoruz. Hepinizin bildiği gibi Kotlin, Java üzerine geliştirilmiş JVM tabanlı bir programlama dili. Sunduğu iyileştirmeler ve değişiklikler büyük çapta “syntactic sugar” olarak nitelendirilebilir. IntelliJ IDEA ile birlikte (sanırım efektif olarak şu an sadece bu IDE ile çalışılabiliyor) kullanıldığında ve mevcut Java kütüphaneleri de Kotlin kodu içerisinde […]

Ayrı Bir Repository Katmanı Şart mı? (2)

Daha önceki bir yazımda ayrı bir repository katmanı şart mı? diye sormuş ve ORM teknolojilerinin ve JPA’nın popülerleşmesi ile CRUD tabanlı bir takım uygulamalarda yazılım geliştiricilerin ayrıca bir DAO/Repository arayüzü oluşturmanın çok da fazla işlevi olmadığını savunarak, doğrudan JPA EntityManager üzerinden servis katmanında veri erişim işlemleri gerçekleştirmeye yöneldiklerinden bahsetmiştim. Bu yazımda bu tür bir pratiğin […]

İlginç Bir Transaction Propagation Hikayesi 3

İlginç Bir Transaction Propagation Hikayesi başlıklı yazı dizisinin ikinci bölümünde Foo, Bar ve Baz entity’lerinden hiçbirinin mevcut durumda DB’ye insert edilemediğini söylemiştim. Ancak problemde hedeflenen Bar entity’sini persist eden ifadeyi try/catch bloğuna alarak, mümkünse Baz ve Foo entity’lerinin Bar’ın insert işleminden etkilenmeden DB’ye insert edilmesidir. Bar entity’si ile ilgili, DB’den gelen constraint violation hatası JPA PersistenceContext’in […]

Spring Boot ve JSF

Java Server Faces (JSF)’i başarısız bir UI framework olarak nitelediğimi değişik ortamlarda ve yazılarımda belirtmişimdir. Ancak ne yapalım ki JSF sıkça kullanılan bir UI framework olarak karşımıza çıkıyor. Spring ekosisteminde JSF’i Spring çözümleri ile entegre etmeye çalışan arkadaşlardan zaman zaman sorular alıyorum. Spring Boot ile geliştirilen web uygulamalarında UI framework olarak JSF’i kullanmak mümkündür. Spring […]

Ayrı Bir Repository Katmanı Şart mı?

Kurumsal yazılım sistemlerinde üç katmanlı mimari yaklaşımı uygulamak “de facto” olmuştur. Bu tür uygulamalarda sunum (presentation), servis (service/business) ve depo (DAO/repository) ayrı ayrı görevlere sahip katmanlar olarak karşımıza çıkarlar. Sunum katmanında UI ile ilgili işlemler gerçekleştirilir. Bu katmanda kendi içinde arayüz (UI) ve dönüşüm/kontrol (controller) şeklinde alt katmanlara ayrılabilir. Dolayısı ile JavaEE dünyasında üç katmanlı […]