RESTful Web Servisleri – JPA Modelleri
Restul web servislerinin nasıl yazılması gerektiğini anlatmaya devam ediyoruz. Önceki yazımızda proje mimarisini oluşturmuş ve veritabanını tasarlamıştık. Şimdi ise hazır olan bu veritabanını kullanıp, JPA modellerini yazacağız.
Içindekiler
- Hazırlık
- JPA Modellerinin Oluşturulması
- Hibernate DAO Sınıflarının Yazılması
- Web Servisin Yazılması
- GAE Üzerine Web Servisin Yüklenmesi
- Web Servis İçin İstemcilerin Yazılması
2. JPA Modellerinin Hazırlanması
JPA bildiÄŸiniz üzere java tarafından geliÅŸtirilen, iliÅŸkisel veritabanlarını (RDB, Relational Database) yönetmek için oluÅŸturulmuÅŸ bir framework. Yani genel olarak duyduÄŸunuz bu ORM (Object Relational Mapping), araçlarının başını çekmektedir. JPA katmanı java içerisinde JSR 312 ile tanımlanmıştır. JPA sadece bir API’dır. Yani kullanmanız için bu API gerçekleyen baÅŸka kütüphanelere ihtiyaç duyarsınız. Biz bu örneÄŸimizde Hibnernate kullanacağız. Hibernate‘ten baÅŸka MyBatis, Eclipse Link gibi çeÅŸitli frameworklerde bulunuyor.
2.1 Firmalarda Genel Olarak JPA Kullanımı
Türkiye’de genel olarak önce veritabanı tasarlanır ardından ise JPA katmanı yazılır. Bu aslında projenin büyüklüğüne göre doÄŸru bir yaklaşımdır. Fakat bu yaklaşımda yapılan hata kurulum safhasında ortaya çıkmaktadır. JPA sizin için, eÄŸer yoksa veritabanını yaratabilir. Fakat JPA katmanınız iyi yazılmış olması gerekmektedir. Genel olarak JPA katmanı iyi yazılmadığından veritabanı üretiminde kullanılmamaktadır.
Bizde yabancılık çekmemeniz açısından bu yöntemi kullanacağız. Fakat aklınızda bulunsun küçük ya da orta ölçekli projelerde önce JPA katmanını yazıp ardından veritabanını oluşturmanızda mümkündür. Eğer uygulamalarınıza bu şekilde yaklaşacak olursanız gerçekten veritabanı sağlayıcısından bağımsız uygulamalar geliştirmiş olursunuz.
Büyük projelerde JPA katmanının doÄŸru yazılması projenin kararlılığı açısından çok önemlidir. Türkiye’de çoÄŸu firma bu sebepten JPA katmanını oturup kendileri yazmaya çalışır. Fakat bu gerekli deÄŸildir. Hibnerate ile JPA Modellerini otomatik oluÅŸturabilirsiniz. EÄŸer kendi oluÅŸturduÄŸunuz bir DAO mekanizmanız da varsa bu modelleri o mekanızmayada çok rahatlıkla aktarabilirisniz.
Kullanacağımız DAO mekanizması ve bu modellerin o mekanizmaya aktarılması bir sonraki bölümün konusudur.
2.2. Bagımlılıkların Ayarlanması
Projemizde daha fazla ilerlemeden önce bağımlılıklarımızı ayarlayalım. rest-db projemizin pom.xml dosyasına aşağıdaki bağımlılıkları ekleyelim. Hibernate bağımlılıklarının eklenmesiyle pom.xml dosyamız aşağıdaki halini almıştır. İlerleyen bölümlerde rest-db projesine eklenen bağımlılıklar bu bağımlılıkların üzerine eklenecektir.
2.3 Hibernate Ayarlarının Yapılması
Hibernate kullandığımız için ve ileride DAO’larımızı doÄŸrudan hibernate üzerinden oluÅŸturacağımız için, modellerimizide hibernate yardımıyla oluÅŸturacağız. Bunun için Eclipse’e Hibernate Tools eklentisini kurmanız geremektedir. Eclipse Market Place içerisinde Hibernate Tools diye arama yaparsanız gereken eklentiyi kolaylıkla bulup indirebilirsiniz.
Eklentiyi indirdikten sonra bir dizi ayarlamalar yapacağız.
2.3.1 Hibernate CFG Ayarları
İlk önce hibernate.cfg.xml dosyamızı oluşturalım. Bunun için projemize sağ tıklayıp New menusune geliyoruz. Burdan Other diyip Hibernate klasörünün altından, Hibernate Configuration File seçeneğini seçiyoruz. Dosya adı olarak hibernate.cfg.xml yazıp kayıt yeri olarak src/main/resources seçiyoruz. Bildiğiniz üzere bu klasör maven tarafından tanımlı olan klasörlerden biri. Bu klasöre koyduğunuz ayar dosyalarınıza doğrudan classpath üzerinden erişebilirsiniz.
Karşınıza gelen pencereyi aşağıdaki gibi dolruabilirsiniz.
Burada Create Console Configuration seçeneÄŸinin seçili olması önemlidir. Aksi halde tekrardan yeni konsol ayarı yaratmanız gerekecektir. Burada ki konsol ayarı Eclipse için gereklidir. Eclipse üzerinden modellerimiz yaratılacağından, Eclipse’e hangi ayarları kullanması gerektiÄŸini söylemek gerekiyor. Bundan dolayı burada Next diyoruz ve Console Configuration yaratımına geçiyoruz.
Eğer burada Finish deyip ekranı kapattıysanız, console configuration kısmına Run Configuration menusünden erişebilirsiniz.
2.3.2 Hibernate Konsol Ayarları
Next dediğinizde sizi yeni bir ekran karşılayacak. Burda;
- Hibernate Versiyonu olarak 3.5
- Ad olarak rest-db
- Hibernate Türü olarak Annotations
- Project olarak rest-db
- Configuration File Olarak is az önce yarattığımız hibernate.cfg.xml dosyasını kullanıyoruz.
Bu haliyle ekranın son hali aşağıdaki gibidir.
Bundan sonra tek yapmamız gereken yeni bir veritabanı baÄŸlantısı eklemek. Bunun için Database Connections kısmından New seçeneÄŸini seçiyoruz. EÄŸer daha önce Eclipse üzerinden veritabanı yönettiyseniz bu ekran size tanıdık gelecektir. EÄŸer yönetmediyseniz, “Aaa Eclipse’te Bu da mı varmış” diyeceksiniz. Evet Eclipse kullanarak’ta veritabanı baÄŸlantıları yönetebiliyorsunuz. Bunun için baÄŸlantı bilgilerinizi ve kullanacağınız sürücüyü göstermeniz gerekiyor. Fakat baÄŸlantılar Eclipse üzerinden yönetileceÄŸi için projenizin Classpath’inde bulunan sürücüyü doÄŸrudan kullanamıyorsunuz. Size tavsiye sürücü olarak M2_HOME üzerindeki mysql connector’unuzu göstermeniz.
2.3.3 Hibernate Geridönüsüm Ayarları
Bu sefer yine projemize sağ tıklıyoruz. New->Others, üzerinden bu sefer Hibernate Reverse Engineering File seçeneğini seçiyoruz. Yine src/main/resources klasörünü ve hibernate.reveng.xml dosya ismini seçip Next diyoruz.
Açılan pencerede Console Configuration kısmından az önce yarattığımız rest-db ismindeki ayarı seçiyoruz. Bunu seçtiğimizde sağ tarafta tablo bilgilerimiz gelecektir. Bu bilgilerden tek tek tüm tablolarımızı seçip listemize ekliyoruz. Ekleme işlemimiz bittiğinde ise Finish diyip ayarlama kısmını bitiriyoruz. Son haliyle aşağıdakine benzer bir ekran elde etmiş olmanız gerekiyor.
Burdan sonra sıra bu ayarları kullanarak JPA modellerini oluşturmaya geliyor.
2.4 JPA Modellerinin Yaratılması
Öncelikle belirtmeliyim ki JPA katmanının yazılması zor bir işlem değildir. Yazılması önemlidir ve sorumluluk gerektirir fakat zor değildir. Bundan dolayı kendiniz yazmayı seçebilirisniz. Ben ise otomatik olarak nasıl oluşturacağınızı anlatacağım.
Ayarlarınızı yaptıktan sonra yapmanız gereken Run menüsünden, Hibernate Code Generation alt menüsüne gelmek ve buradan Hibernate Code Generation Configuration seçeneğini seçmek. Bu seçeneği seçtiğinizde karşınıza Run Configuration menüsüne benzer bir menü çıkacak.
Soldaki Hibernate Code Generation yazısına sağ tıklayın ve New seçeneğini seçin. Karşınıza aşağıdakine benzer bir ekran çıkacaktır.
- Burada öncelikle az önce oluÅŸturduÄŸumuz Console Configuration’ı seçiyoruz.
- Ardından çıktı alınacak yol olarak projemiz içerisindeki src/main/java yolunu seçiyoruz.
- Reverse engineer from JDBC Connection seçeneğini aktif hale getiroyurz.
- Paket adı olarak com.bahadirakin.model giriyoruz.
- reveng.xml olarak az önce oluşturduğumuz hibernate.reveng.xml dosyasını veriyoruz.
- Ardından Exporters tabına geçip Domain seçeneğini seçiyoruz.
- Yine exporters tabından Use Java 5 syntax ve Generate EJB3 annotations seçeneğini aktif hale getiriyoruz.
Son haliyle aşağıdakine benzer bir ekran elde ediyoruz.
Burdan sonra Run diyoruz. Eğer herşeyi doğru şekilde ayarladıysanız modelleriniz oluşacaktır.
2.5 JPA Modelleri
Hem Car hem User tablosu için JPA modellerimiz oluştu.
com.bahadirakin.model.User
 com.bahadirakin.model.Car
Projeleri yaratırken sorun yaÅŸadıysanız, proje yapısına Gir Repo’sundan bakabilirsiniz.
Bir sonraki projemizde, kendi DAO mimarimize oluşturduğumuz modelleri nasıl entegre edeceğimize bakacağız.
End Of Line