Glassfish + Eclipselink + Maven + DbUnit:
Glassfish V3 Prelude sürümünün yayınlanması ile birlikte bu uygulama sunucusunun içerisinde default persistence provider olarak gelen Eclipselink‘i inceleyeyim dedim. Glassfish V3 her ne kadar tam anlamıyla JEE 5 certified bir uygulama sunucusu olmasa da genel anlamda benim ihtiyaç duyacağım her şeyi sunuyor. Web container, ejb container, transaction desteği… Bunların yanında update center’dan JRuby, Grails vb. pek çok desteği de ekstra olarak çekip kurabiliyorsunuz.
Neyse, fazla lafı dağıtmadan eclipselink’e döneyim. Bildiğiniz gibi Oracle persistence provider’ı olan toplink ürününün bir nevi light versionu olan toplink-essentials‘ı open source camiasına hediye etmişti. Glassfish’in bundan önceki sürümlerinde de (V1 ve V2) toplink-essentials kullanılıyordu. Ancak geçen sene içinde Oracle toplink ürününün tamamına ait kaynak kodunu Eclipse Foundation’a bağışladı ve Eclipselink ortaya çıktı. 2008 Mart ayında ise Sun Microsystems, Eclipse ve Oracle ortak bir girişimle Eclipselink’in JPA 2.0 referans implementasyonu olmasına karar verdiler. Şu anda 1.0.2 stable sürümü olan Eclipselink Glassfish V3 ile birlikte bizlere sunuluyor.
Tabi uygulama sunucusu olarak Glassfish V3 tercih edildiğinde geliştirme ve test aşamalarında da yine aynı ortamı sağlamak amacıyla Eclipselink kullanmak zorundasınız. Başka bir JPA provider kullanabilirsiniz elbette ama hem eclipselink’in kendine has özelliklerini kullanmak, hem de uygulama sunucusu üzerinde çalıştırdığınızda sürprizlerle karşılaşmamak için unit testlerinizi de yine aynı persistence provider ile çalıştırmak isteyeceksinzdir.
Bunun için aslında güzel bir tutorial yazmak isterdim ama benden önce çok güzel şekilde yazmışlar. Sade ve işe yarar küçük bir örnek olan bu tutorial’da maven ile eclipselink kullanarak mysql ya da derby database’i üzerinde DbUnit ile nasıl unit testler çalıştırabileceğinizi anlatıyor. (Amma cümle oldu!!! içinde binbir tane buzzword var!!) Tutorial’ı yazan arkadaş örnek kodları da favori ide’m olan intellij projesi olarak da koymuş daha bir güzel olmuş
Eclipselink’in kendine has JPA’dan ayrı bir takım eklentileri ve iyi olduğu söylenen cache mekanizması var. (Henüz derinlemesine incelemedim.) Bu kendine has özellikleri Eclipselink JPA Extensions adı verilen bir api ile sunuyor. Bu api içerisinde standard JPA annotation’larına ek olarak kullanabileceğiniz ekstra annotationlar var.
Son olarak glassfish’in de Eclipselink kullanımı ile ilgili kendi dökümantasyonu olduğunu söyleyeyim. Glassfish V3 Prelude her ne kadar Prelude adı insanı yanıltsa da production ready ve Sun tarafından ticari olarak desteklenen bir ürün ve iyi şekilde dökümante edilmiş. Yalnızca eksiği bir V3′e ait planlanan tüm özelliklerin implement edilmemiş olması. Örneğin clustering yok.