Kenan Sevindik

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

    By Kenan Sevindik
    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... [Read More]
  • İlginç Bir Transaction Propagation Hikayesi 3

    By Kenan Sevindik
    İ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. [Read More]
  • Spring Boot ve JSF

    By Kenan Sevindik
    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. [Read More]
  • Ayrı Bir Repository Katmanı Şart mı?

    By Kenan Sevindik
    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. [Read More]
  • İlginç Bir Transaction Propagation Hikayesi 2

    By Kenan Sevindik
    İlginç Bir Transaction Propagation Hikayesi isimli blog yazımızın ilk bölümünde Foo, Bar ve Baz entity’lerini insert eden FooService ve BarService bean’lerinin birbirlerini çağırırken, insert işlemlerini iki farklı transaction içerisinde yapmaya çalıştıklarından bahsetmiştik. Önce FooService.foo() metodu içerisinde Foo entity’si, ardından da BarService.bar() metodu içerisinde sıra ile Baz ve Bar entity’leri JPA... [Read More]
  • İlginç Bir Transaction Propagation Hikayesi

    By Kenan Sevindik
    Aşağıdaki örnekte Foo, Bar ve Baz şeklinde üç basit entity sınıf görüyorsunuz. Foo ve Baz içerisinde PK dışında hiçbir property mevcut değilken, Bar sınıfında ise not null özelliğinde bir name property’si tanımlı. Ayrıca bu entity’leri persist eden FooService ve BarService servis bean sınıflarımız da var. [Read More]
  • ServiceLoader vs SpringFactoriesLoader, Hangisini Kullanalım?

    By Kenan Sevindik
    Java’nın ServiceLoader kabiliyeti, Java 1.6’dan bu yana sunulan, ancak pek de bilinmeyen, basit bir kabiliyettir. Biraz da Spring’in gölgesinde kalmıştır diyebiliriz. Sonuçta ServiceLoader ile sunulan kabiliyeti de kapsayan ve çok daha fazlasını sunan bir IoC container’ınız varsa uygulama içerisinde farklı servis gerçekleştirimlerini dinamik olarak yükleme ve kullanma ihtiyacı için Spring... [Read More]
  • Eclipse Package Explorer'da Font Büyüklüğü

    By Kenan Sevindik
    Uzun zamandır geliştirme platformu olarak Eclipse/Spring Tool Suite’i tercih ediyorum ve Kurumsal Java Eğitimleri’mizde de bunu kullanıyorum. Eğitimler sırasında Eclipse içerisinde açılan editor’lerin fontlarını Window>Preferences>Appearance>Colors and Fonts bölümünden değiştirebiliyoruz. Ancak geçen bir eğitimde projeksiyon cihazının netlik probleminden dolayı Package Explorer’daki paket, sınıf ve dosya isimlerinin de fontlarını büyütmek gerekti. Eclipse’in... [Read More]
  • Online Eğitim Hazırlama Tecrübeleri

    By Kenan Sevindik
    Bu blog yazımda size online eğitim hazırlama tecrübelerimden bahsedeceğim. Yaklaşık 3.5 ay önce Udemy’de yayınlanmak üzere bir online eğitim hazırlama işine giriştim. Bu hafta itibari ile Spring Boot 2.0 ile Dinamik Web Uygulamaları isimli eğitimimiz Udemy platformundan yayına girmiş bulunuyor. [Read More]
  • ServiceLocator'dan Inversion of Control'a Yolculuk

    By Kenan Sevindik
    Harezmi Bilişim Çözümleri olarak 7 seneden fazla bir zamandır Spring Application Framework ile ilgili eğitimler veriyoruz. J2EE’nin ilk dönemlerinde kurumsal Java uygulamaları geliştirilirken kullanılan ServiceLocator örüntüsünün nasıl IoC veya Dependency Injection’a doğru evrildiğini anlamanın Spring Application Framework’ün özünü ve temel felsefesini anlamak için çok faydalı olduğunu düşündüğümüz için de eğitimelerimizde... [Read More]
  • Hibernate EntityCopyObserver; What Is It Used For?

    By Kenan Sevindik
    JPA merge operation is used to reconnect and synchronize detached entities with active PersistenceContext so that changes performed on them could be reflected onto the database. Due to its complex nature, there might be times when multiple representations of an entity appears in the merge process. Hibernate throws IllegalStateException in... [Read More]
  • Feature Interaction Problems and Spring Security

    By Kenan Sevindik
    Feature interaction problem is something that features work smoothly and without any problem in your system individually; however, problems arise with those features when you bring them together. Bertrand Meyer has recently published his thoughts about the topic as well. While reading on it, I’ve come to realize that Spring... [Read More]
  • Weird Rollback Behavior of Spring TestContext Framework

    By Kenan Sevindik
    One of the nice features of TestContext module of Spring Application Framework is its ability to run unit tests within a transaction context. By that way, you are able to both execute your persistence operations which usually expect an active transaction to run, and also rollback state changes occur during... [Read More]
  • Configuring Vaadin without web.xml

    By Kenan Sevindik
    There is always room for improvement in programming world. After my initial post about configuring Vaadin in 6 simple steps, one of my friends indicated that we could have used annotation based configuration to get rid of web.xml in our Vaadin configuration. Yes, he is right. It is possible to... [Read More]