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

  1. Hazırlık
    1. Projenin Yaratılması
    2. Veritabanının Yaratılması
  2. JPA Modellerinin Oluşturulması
  3. Hibernate DAO Sınıflarının Yazılması
  4. Web Servisin Yazılması
  5. GAE Üzerine Web Servisin Yüklenmesi
  6. 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