Welcome

Hibernate mi, JPA mı?

Hibernate ile ilgili eğitimlerimizde ve danışmanlık faaliyetlerimizde sıklıkla karşılaştığım sorulardan bazıları JPA mı kullanalım, Hibernate mi? Siz hangisini tercih ediyorsunuz? veya Niçin Hibernate/JPA? şeklinde oluyor. JPA hepimizin bildiği gibi bir spesifikasyon, enterprise Java ve ORM dünyasındaki gelişmeler sonucunda ortaya çıkmış bir “persistence API”. Doğal olarak, en nihayetinde bu spesifikasyon kağıt üzerinde birtakım tanımlamalardan ibaret. Kullanabilmek […]

Hibernate ve İkincil ÖnBellek Yazı Dizisi

Hibernate ve Second Level Cache’in anlatıldığı bir yazı dizisini yayımladık. Yazılarda Hibernate’in çok sık kullanılmayan, kullanıldığında da zaman zaman saç baş yolduran bu özelliği hakkında dikkat edilmesi gereken noktalar, eşzamanlı erişim stratejilerinin davranışları, önbelleğin konfigürasyonu ve kullanımı hakkında işinize yarayabilecek konulara değindik. Hibernate ve İkincil ÖnBellek Hibernate İkincil Önbellek Eşzamanlı Erişim Stratejileri Hibernate İkincil Ön […]

Hibernate İkincil Ön Bellek Konfigürasyonu ve Kullanımı

İkincil önbelleği aktive etmek için hibernate konfigürasyonunda üç property tanımına ihtiyaç vardır. EHCache provider için konfigürasyonumuz şu şekilde olabilir. <property name=”hibernate.cache.use_second_level_cache”>true</property> <property name=”hibernate.cache.use_query_cache”>true</property> <property name=”hibernate.cache.provider_class”>org.hibernate.cache.EhCacheProvider</property>   Buradaki tanımlardan ilki ikincil önbelleği aktive eder. Entity sınıflarda ve ilişkilerde yapılacak önbellek tanımlarımız ancak bu tanımdan sonra devreye girebilir. İkinci tanım ise sorgu önbelleğini devreye alır. Fakat her […]

Hibernate İkincil Önbellek Eşzamanlı Erişim Stratejileri

Hibernate ikincil önbellek yapısı, değişik eşzamanlı erişim stratejilerini desteklemektedir. Bunlar daha önce de belirttiğimiz gibi transaction isolation düzeylerine benzemektedir. Bu stratejilerin kısıtları azaldıkça performansları artar, ancak uygulamanın stale veri ile karşılaşma ihtimali de aynı şekilde fazlalaşır. Dört adet eşzamanlı erişim stratejisi vardır. Transactional Senkron bir eşzamanlı erişim stratejisidir. Başka bir deyişle önbellek üzerindeki veri güncellemeleri […]

Hibernate ve Second Level Cache

Hibernate iki seviyeli cache mimarisine sahiptir. Birinci düzeyde cache rolünü persistence context üstlenmektedir ve zorunludur. Başka bir deyişle mutlaka devrededir. Bir entity aynı persistence context içerisinde iki veya daha fazla kez erişildiğinde, Hibernate sadece tek sefer veritabanına gidecek, diğerlerinde ise entity referansı doğrudan persistence context’den dönülecektir. Persistence context Hibernate Session içerisinde yer alan bir yapıdır. […]

Hibernate Nedir?

Bu soruya hepimizin vereceğimiz cevap hemen hemen şu şekildedir: “Hibernate bir object relational mapping framework’dür.” “object relational mapping framework”ün ne olduğuna dair sorduğumuzda ise aldığımız cevaplar nesnelerle tablolar, nesnelerin propertyleri ile tabloların sütunları, nesneler arasındaki ilişkilerle tablolar arasındaki foreign key’ler arasında eşlemeler yapan bir araçtır uygulama içerisinde -mümkün olduğunca- nesne dünyaya odaklanarak relational dünyadan bizi […]

HQL ve Criteria Sorgularında FetchMode Farklılıkları

Lazy tanımlanmış 1:M bir ilişkinizinin fetch tipini eager’a çektiğiniz vakit sorgu sonucu dönen kayıtlar arasında duplikasyon olduğunu tecrübe ettiğiniz oldu mu? Eğer sorgunuzda Criteria API’sini kullanmış iseniz bu durumla pek muhtemelen karşılaşmışsınızdır. Sorgunuzu HQL’e çevirdiğiniz takdirde sonuçlardaki duplikasyonların ortadan kalktığını görürsünüz. Peki Hibernate sorgularındaki bu farklılık neden ortaya çıkmaktadır? Cevabı hemen söyleyelim. HQL sorgusu entity’ler […]

JPA, Hibernate ve JDBC Kullanırken AutoCommit Özelliği ve TXler

Doğrudan JDBC Kullanırken JDBC spesifikasyonuna göre veritabanı bağlantılarının default autocommit değeri true’dur. Bu nedenle doğrudan JDBC ile işlem yaptığınızda veri üzerinde değişiklik yapan operasyonların her birisi kendi başına ayrı bir transaction’da ele alınacaktır. Transactional çalışabilmek için öncelikle bağlantının automcommit özelliğini false yapmanız gerekmektedir. Eğer veritabanı bağlantısı yaratılırken autocommit değerinin false olmasını istiyorsanız bunu DataSource’un defaultAutoCommit […]

JBPM Jpa Entegrasyonu

Bir süredir blog yazılarına ara vermiştim. Bu süre zarfında Business Process Management kabiliyetinin mevcut altyapımıza kazandırılması için çalışmalar yaptık. BPM için tercihimiz JBPM’den yana oldu. Bu ve devamındaki yazılarımda JBPM ile ilgili tecrübelerimizi, JBPM’in JPA, Spring WebFlow, Acegi Security gibi diğer frameworklerin de yer aldığı altyapımıza entegre edilmesi ile ilgili geliştirdiğimiz çözümleri, JBPM’in gömülü biçimde […]

Güncel Yazılım Mühendisliği Pratikleri ve Kurumsal Java Teknolojileri

28 Nisan 2008 Pazartesi günü ODTÜ Bilgisayar Mühendisliği Bölümü’nde “Contemporary Software Engineering Practices Together with Enterprise Java Technolojies” başlıklı bir sunum gerçekleştirme fırsatı buldum. Aşağıda sunumdan yola çıkarak oluşturduğum kısa bir makaleyi yayımlıyorum. Ayrıca sunum’un kendisine de buradan erişmek mümkün. Umarım bu çalışma yakın dönemde mezun olacak öğrenci arkadaşlara faydalı olmuştur. Güncel Yazılım Mühendisliği Pratikleri […]