Web Tabanlı J2EE Uygulamalarında Struts Framework & Hibernate Desteği



Benzer belgeler
ÖZGÜR YAZILIMLAR İLE J2EE

Üst Düzey Programlama

Üst Düzey Programlama

Basit Mimari, Katmanlı Mimari ve doğrudan çalıştırma olarak üçe ayrılır.

Java EE web uygulamaları geliştirmek için kullanılan açık kaynak web uygulama framework üdür.

Spring Ekosisteminde Kurumsal Yazılım Geliştirme. Kenan Sevindik Harezmi Bilişim Çözümleri A.Ş.

Android e Giriş. Öğr.Gör. Utku SOBUTAY

ORM & Hibernate. Ahmet Demirelli. SCJP 5.0, SCWCD 1.4 ahmetdemirelli@sabanciuniv.edu

JAVA RMI ve Hibernate teknolojileri kullanılarak çok amaçlı bir yazılım altyapısı hazırlanması

Üst Düzey Programlama

Java EE 5 Teknolojileri Jboss Seam

İnternet Programcılığı

Öğr. Gör. Serkan AKSU 1

YZM 3215 İleri Web Programlama

Java ve Linux. Bora Güngören Portakal Teknoloji Akademik Bilişim

Java Temel Özellikleri

Google Web Toolkit ile Öğretim Elemanı Otomasyon Sistemi

Java. Hakkımızda. Java Eğitimi

Client Server Database

Asp.Net Veritabanı İşlemleri

Üst Düzey Programlama

1.PROGRAMLAMAYA GİRİŞ

Servis olarak Altyapı

JavaServerFaces. Ahmet Demirelli. SCJP 5.0, SCWCD 1.4

Veritabanı Uygulamaları Tasarımı

Script. Statik Sayfa. Dinamik Sayfa. Dinamik Web Sitelerinin Avantajları. İçerik Yönetim Sistemi. PHP Nedir? Avantajları.

Model Tabanlı Geliştirmede Çevik Süreç Uygulanması

MyFaces Özgür JSF Uyarlaması. Bora Güngören Portakal Teknoloji

VERİ TABANI YÖNETİM SİSTEMLERİ

VERİ TABANI YÖNETİM SİSTEMLERİ

Java Programlama Giriş

Kaynak Kod Güvenliği Bir Güvensiz API Örneği

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 10. LINUX OS (Programlama) BİLGİ & İLETİŞİM TEKNOLOJİLERİ GENEL BAKIŞ

1 Temel Kavramlar. Veritabanı 1

Web Uygulamaları Mimarileri ve Güvenliği

İNTERNET PROGRAMLAMA 2 A S P. N E T. Marmara Teknik Bilimler MYO / Hafta 5 Veri Tabanı İşlemleri

CENG 302 Yazılım Mühendisliği Yazılım Mimarisi - Devam. Alper UĞUR

Tekir (Ön Muhasebe Yazılımı)

VERİ TABANI SİSTEMLERİ

BİLGİSAYAR PROGRAMLAMAYA GİRİŞ

ANKARA ÜNİVERSİTESİ ELMADAĞ MESLEK YÜKSEKOKULU BİLGİSAYAR PROGRAMCILIĞI PROGRAMI DERS İÇERİKLERİ

Arş.Gör.Muhammet Çağrı Gencer Bilgisayar Mühendisliği KTO Karatay Üniversitesi 2015

Compiere Açık kodlu ERP + CRM yazılımı. Hüseyin Ergün Önsel Armağan Serkan Demir

Veritabanı Dersi. Teoriden Pratiğe. Çağıltay N.E., Tokdemir G. Veritabanı Sistemleri Dersi -Bölüm XXV: Web'den Erişim Çağıltay, N., Tokdemir, G.

Yazılım Çeşitleri. Uygulama Yazılımları. İşletim Sistemleri. Donanım

Yazılım Mühendisliği Bölüm - 3 Planlama

İngilizce'de Relational Database Management System (RDBMS) olarak ifade edilir.

Swing ve JDBC ile Database Erişimi

Veritabanı. Ders 2 VERİTABANI

İNTERNET PROGRAMCILIĞI DERSİ

Kepware Veritabanı Ürünleri. Teknolojiye Genel Bir Bakış

Bilgi Servisleri (IS)

1 Milyon Kullanıcıya Nasıl Hizmet Veriyoruz? CloudLMS Teknik Alt Yapı ve Mimarimiz

Tarih Saat Modül Adı Öğretim Üyesi. 01/05/2018 Salı 3 Bilgisayar Bilimlerine Giriş Doç. Dr. Hacer Karacan

Akıllı telefonlar, avuçiçi bilgisayarlar ile taşınabilir (cep) telefonların özelliklerini birleştiren cihazlardır. Akıllı telefonlar kullanıcıların

Görsel Programlama DERS 01. Görsel Programlama - Ders01/ 1

2-Veritabanı Yönetim Sistemleri/ Temel Kavramlar

Film Arşiv Sistemi. Yazılım Tasarım Belgesi

Başlık: Windows Sistem Yöneticisi Yardımcısı

Güvenlik Java ve Web Uygulama Güvenliği

Bitirme Ödevi Sunumu PLATFORM BAĞIMSIZ BENZETİM PROGRAMI. Danışman : Yrd.Doç.Dr. D Feza BUZLUCA Gökhan Akın ŞEKER

Microsoft SQL Server 2008 Oracle Mysql (Ücretsiz) (Uygulamalarımızda bunu kullanacağız) Access

UZAKTAN EĞİTİM MERKEZİ

Pardus. A. Murat Eren, 25 Mart Pardus Geliştiricisi. Pardus Yenilikleri Sık Sorulan Sorular

2. hafta Bulut Bilişime Giriş

VERİ TABANI PROGRAMCILIĞI DALI

Bölüm 10: PHP ile Veritabanı Uygulamaları

GittiGidiyor ve Açık Kaynak Kodlu Yazılımlar

IDE4DB Veritabanı Geliştirme Platformu Bitirme Projesi Sunumu

Veri Tabanı Yönetim Sistemleri Bölüm - 3

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Yazılım Destek Hizmeti

Programlama Dilleri sıralaması Programlama Dilleri sıralaması 2016

Php Programlama Dili MySQL Uygulamaları

Implementation of the Hibernate Persistence Layer

ELIF KIOTZEOGLOU RESUL MURAD MERT PACOLARI

Yaptığımız web sitelerinin daha kullanışlı olması için veritabanı sistemleri ile bağlantı kurup ihtiyaca göre verileri okuyup yazmasını isteriz.

Spring Security Framework Harezmi Bilişim Çözümleri

BIM 312 Database Management Systems. Veritabanı Kavramına Giriş

PHP 1. Hafta 2.Sunum

Ders Tanıtım Sunumu. Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı. 26 Şub Öğr. Gör.

Mobil Cihazlardan Web Servis Sunumu

Coslat Monitor (Raporcu)

Web Uygulama Güvenliği Kontrol Listesi 2010

.com. Kurumsal Java. Özcan Acar com

5. PROGRAMLA DİLLERİ. 5.1 Giriş

Bilgisayar İşletim Sistemleri BLG 312


AJAX nedir? AJAX nasıl çalışır? AJAX. Tahir Emre KALAYCI. Sunucu Yazılım Teknolojileri

Bilgisayar Mühendisliğine Giriş. Yrd.Doç.Dr.Hacer KARACAN

Pardus. S.Çağlar Onur, 21 Aralık Pardus Projesi [TÜBİTAK / UEKAE] Linux Kullanıcıları Derneği

Ders Kodu Yarıyıl T+U Saat Kredi AKTS. Programlama Dilleri

EMC Forum Yazılım Temelli Veri Depolama Moro Hekim Sistem Mühendisi

Tasarım Desenleri ve Java Web Servisleri ile Çok Katmanlı Bir Sistem Tasarımı

Açık Kaynaklı J2EE Geliştirme Araçları. Ahmet Işık İdeal Teknoloji A.Ş.

Bilgi Teknolojisi ve Muhasebe Bilgi Sistemi 6-1

TCMB Deneyim Raporu. Kurumsal Java Uygulama Platformu. Sacit Uluırmak. Türkiye Cumhuriyet Merkez Bankası Sistem Araştırma ve Planlama Müdürlüğü

SAKLI YORDAM (Stored Procedure) Sibel Somyürek

Açık Kaynak Kodlu Yazılım

Transkript:

Web Tabanlı J2EE Uygulamalarında Struts Framework & Hibernate Desteği Bilgihan Çetinkaya Çanakkale 18 Mart Üniversitesi Bilgisayar Mühendisliği bilgihan.cetinkaya@gmail.com Ömer Yazıcı Çanakkale 18 Mart Üniversitesi Bilgisayar Mühendisliği omer.yazici@gmail.com Özet Her geliştirici uygulama geliştirme safhasında kolaylık, rahatlık ister ve kendisinin motivesini bozacak kadar çok farklı işlerle uğraşmak istemez. Bunun için çeşitli geliştirme teknikleri ve araçları vardır. Framework, uygulama geliştiricileri, J2EE'nin alt seviyedeki karmaşıklığından soyutlayan, ve geliştiriciye rahat ve kolay bir geliştirme ortamı sunan, projeye standart kazandıran bir uygulama geliştirme modelidir. Struts Framework ise bu modelin oldukça başarılı ve yaygın olan açık kaynak kodlu bir örneğidir. Struts MVC Model 2 üzerinde geliştirilen iş mantığını ve sunumu birbirinden ayıran bir Apache projesidir. Uygulamaların vazgeçilmezi olan kalıcı veri işlemleri, uygulamaların en önemli noktalardandır. Hibernate, verilere erişimi ve veriler üzerinde sorgulama işlemlerini nesneye yönelik uygulama geliştirenlerin aşina olduğu şekilde yani nesnesel olarak performanslı bir şekilde yapmayı sağlayan en popüler Nesne/İlişkisel Eşleme aracıdır. Tüm bunlar, hayati ve kritik önem taşıyan Hastane Bilgi Yönetim Sistemi gibi uygulamaların web tabanlı olarak geliştirilmesini sağlayan önemli unsurlardır. Absract Hastane Bilgi Yönetim Sistemleri gibi enterprise uygulamalarında yüksek veri işlemlerinin yoğun olduğu göz önüne alındığında güçlü bir Veritabanı Yönetim Sisteminin yanı sıra, ultra hızda 'insert' ve 'update' işlemlerinin gerçekleştirilmesi kaçınılmaz bir gereksinim haline gelmiştir. Bunu da özellikle Java gibi nesneye yönelik programlamayı kullanan geliştiricilere çok daha yakın yapısı ile elle yazılan JDBC kodlamasından daha kolay, verimli ve yönetilebilir bir şekilde oluşturulan, ORM(Object/Relational Mapping) ile VTYS'nin üzerinde, çok katmanlı mimarilerde kalıcı sınıfların yaşadığı katmanda (Persistence Layer) çalışan Hibernate'in kullanımı. Uygulamalarda veri bütünlüğü ve güvenliğinin önemi yadsınamaz boyutta olduğu için önemi gittikçe artan çok katmanlı(mutlitier) yapıya sahip sistemlerin oluşturulmasını sağlayan ve geliştirilmesinde büyük yardımcı olan Struts Çalışma Çatısı'nın (FrameWork) çalışma şekli. Bu iki teknolojinin web tabanlı J2EE uygulamalarındaki yeri. Anahtar Kelimeler J2EE, Struts Framework, Hibernate, ORM, MVC, HBYS 1. Giriş Şuan kendimizi istemci/sunucu mimarisinin yetersizliklerinden ve zorluklarından bıkmış ve sunucu taraflı, web tabanlı bir HBYS geliştirmek isteyen bir J2EE uygulama geliştiricisi yerine koyalım. Önümüze ne tür zorluklar çıkacak ve bu zorlukları en optimal şekilde nasıl aşacağız. Alışılagelen programlama tekniklerinden sıyrılarak, uygulama geliştirmenin daha hızlı ve rahat olduğu bir ortamın oluşturulması için neler gereklidir ve günümüz teknolojisi bize neler sunmaktadır. Bu makalemizde size web uygulamalarında neden ve nasıl Struts Framework ve Hibernate kullanmamız gerektiğinden bahsedeceğiz. Bununla beraber bu

teknolojileri, istemci/sunucu mimarisiyle yapılma alışkanlığı kazanılmış, HBYS (Hastane Bilgi Yönetim Sistemi)gibi bir uygulamanın ufak bir kısmı üzerinde nasıl gerçekleştirdiğimizden bahsedeceğiz. 2. Framework Framework, uygulamalarımız için yeniden düzenleyebileceğimiz sınıflar kümesidir. Bir uygulama veya uygulama katmanı için, tekrar düzenlenebilen sınıf kümelerine framework denir. Herhangi bir işlemi gerçekleştirmek için yazdığımız uygulama kodları, sınıf kütüphanelerini çağırırken, framework, çalışma zamanında, yazılan uygulama kodlarının kendisini çağırır. Böylece programın akışı kontrol altına alınır. Framework yaklaşımı J2EE uygulaması geliştirmenin karmaşıklığına çok iyi uyum sağlamaktadır. Çünkü uygulama geliştiricileri için basit ve kullanımı kolay bir modeldir. İyi tasarlamış bir framework kullanarak: Program geliştirici, sadece gerekli kodu yazar ve alt sevide olan bir yığın iş arasında boğulmaktan kurtulur. Projeye bir biçim ve tutarlılık kazandırır. Buda, projeye sonradan katılan geliştiricilerin projeye uyumlarında büyük kolaylık sağlar. Örnekler ve belgelerle framework modeli kolayca öğrenilebilir ve uygulama geliştirilebilir. J2EE'nin kendisine ait birçok framework vardır. EJB kaplarını veya JSP sayfalarından submit yaptığımızda Servlet sınıfındaki doget() veya dopost() yordamlarının ilk olarak çağrıldığı yapıyı da, buna örnek olarak gösterebiliriz. Struts Framework gibi açık kaynak kodlu web uygulamaları da sahip oldukları framework yapılarını standart Servlet framework üzerinde geliştirmişlerdir. Framework oluşturmadaki asıl amaç J2EE uygulaması geliştirmede daha basit bir programlama modeli oluşturmaktır. 3. MVC & Struts Framework İlk olarak, nesneye yönelik programlamanın başlangıcı olan SmallTalk platformunda oluşturulan MVC(Model View Controller) kalıbı, uygulamayı 3 bölüme ayırır. Böylece uygulamada iş bölümü gerçekleştirilerek, yazılım mühendisliğinin önemli bir etkeni olan esneklik sağlanmış olunur. 1999-2000 yıllarına kadar geliştiriciler iş mantığını ve complex HTML kodlarını yani işin makyaj kısmını JSP'ye yükledi. Gelen istemleri JSP sayfası karşılar ve gerekli iş mantığını kendi üzerinde yürütür ve yine sonucu da ya kendi üzerinde yada başka bir JSP sayfasına yönlendirerek sunardı. Bu yaklaşımda MVC Model 1 olarak adlandırıldı(bknz. Şekil 1.0). Bu modelde yönlendirmeler JSP sayfalarındaki linklerle sağlanırdı. Bu sebepten dolayı yönlendirmelerde veya iş mantığı akışında bir değişiklik yapılmak istendiğinde birden çok JSP sayfasının da değiştirilmesi gerekiyordu. Yine bu sebepten dolayı çok miktarda kod tekrarı yapılıyordu. HTML kodlarının ve iş mantığının aynı JSP sayfasında bulunması programın esnek bir yapıya sahip olmasını engelliyordu. Bu eksiklikler ise MVC Model 2 diğer bir adıyla Web MVC modeli ile giderilmiş oldu(bknz. Şekil 1.1). İş mantığı Java sınıflarına(servlet) yüklendi. Denetleyici (Controller) olarak atanan Servlet, gelen isteği inceledikten sonra gerekli iş mantığını yürütecek ilgili sınıfı çağırır. Çıkan sonucu da sadece sunum işleminin yapıldığı ilgili JSP'ye gönderir. Uygulamanın merkezi olarak yönetilmesi değişikliklerin kolayca yapılmasını sağlar. Şekil 1.1 MVC Model 2 Apache Software Foundation 2001-2002 yıllarında MVC Model 2'yi baz alarak Struts Framework'ü geliştirdi. Struts tekrar kullanılabilir MVC Model 2 tasarımı yapan, ortak çalışan sınıf, Servlet ve JSP tag'larından oluşan bir kümedir. Tanımım da anlaşılacağı

üzere Struts bir kütüphane değil, frameworktür. MVC Model 2 bunu başaramadığı halde, Struts başarılı çalışma performansıyla, hızlı bir şekilde de facto standardı haline gelmiştir. Struts açık kaynak kodlu framework'ün bütün faydalarını sergileyerek, birçok kişisel aşinalık kazanmıştır ki 2002 yılı sonuna doğru çoğu J2EE Web uygulamalarında ve ciddi J2EE web uygulaması geliştiricilerinin doğal seçimi haline gelmiştir. Struts'ın açık kaynak kodlu framework projesi olmasıyla, hem kullanıcılara web uygulamalarını geliştirmeleri için kaynak teşkil etmiştir hemde geliştiricilerin Struts'ı kendi uygulamalarında nasıl kullanacaklarını tartışabilecekleri bir iletişim ortamı sağlamıştır. Şekil 1.2 Struts Mimarisi Struts'a Genel Bakış(Bknz. Şekil 1.2) Model: Action sınıflarından oluşur. Action sınıfı iş mantığının sarmalayıcısıdır. Geliştirici tarafından birden fazla Action sınıfı tanımlanabilir. Bu sınıf HttpServletRequest istemini iş mantığına çeviren bir köprü görevi görür. org.apache.struts.action.action sınıfından türetilir(extend) ve bu sınıfın execute() yordamı üstüne yazılır(override)(bknz. Şekil 1.2). Bu sınıfın geri döndürdüğü değer, sunumun yapılacağı yönlendirme bilgisidir. Action sınıfları yapılacak gerçek işi gerçekleştirmek için JB(Java Bean) yada EJB'leri kullanırlar. Arayüz(View): JSP ve bazı JSP taglarından oluşur. Herhangi bir iş mantığı ya da akış içermez. ActonForm nesneleri kullanır. Sayfalarda girilen form bilgilerini tutmak ve bu bilgileri modele taşımak için kullanılır. Hangi sayfanın hangi ActionFormu kullanacağı tanımlaması Struts-config.xml dosyasında yapılır. Struts'ın kendine özel tag kütüphanesi bulunmaktadır ve sayfaların daha hızlı yapılmasına yardımcı olurlar. Controller(Denetleyici): İstemci gezgininden gelen istem bir olay oluşturur. Denetleyiciler(Controller), gezginden gelen istemleri alır ve bu istemleri nereye yönlendireceğine karar verir. Controllerin sınıfı ActionServlet'tir ve web.xml de tanımlanır. Gelen istemin yönlendirilmesini yaparak, işlemlerin gerçekleştirileceği, iş mantığının yürütüleceği yardımcı Action sınıfının execute() yordamı çalıştırılır. ActionServletin istekleri nasıl Action'lara göndereceğini ActionMappins sınıfı sayesinde anlar. Bu sınıf belirli bir isteğe karşı hangi Action sınıfının eşleşeceğini tanımlar. Bu tanımlama struts-config.xml dosyasında gerçekleştirilir. Yapılandırma dosyası olarak strutsconfig.xml dosyasının kullanılacağı web.xml dosyasında tanımlanır. 4. ORM & Hibernate Kalıcı verilerin yönetim şekli bütün yazılım projeleri için önemli bir anahtar nokta olmuştur. İlkel sorgulama işlemlerini(create, insert, update,delete) SQL ve JDBC de el ile mi yazmalıyız yoksa bunlar otomatik olarak mı oluşturulmalı? Her veritabanı yönetim sisteminin kendi sorgu diyalekti varken taşınabilirlik nasıl başarılacak? Normalde Java'da kalıcılık verinin ilişkisel veri tabanına SQL ile kaydedilmesidir. Ama burada sorun bu işi nesneye dayalı uygulamalarda en başarılı şekilde nasıl yapacağımızdır. Bu sorunların cevapları tartışılırken, son zamanlarda Nesne İlişkisel Eşleme (ORM(Obect/Relational Mapping)) büyük kabul gördü. Nesne İlişkisel Eşleme, İlişkisel Veri tabanı ile Nesneler arasında çevirme yapma ve bağlantı kurma işlemidir. Küçük nesnelerle bu işlemi yapmak kolay iken nesnelerin, verilerin ve birleştirmemiz gereken tabloların sayısı arttıkça, bu işleminin yapılması oldukça zor bir hal alır. Karmaşıklaşan nesne modeli ve ilişkileri karşımıza sorun olarak çıkar. Hibernate bu nokta da bu işlemleri en başarılı şekilde yerine getirmemizde bize büyük kolaylık, rahatlık ve başarım sağlar. Hibernate Java'da kalıcı veri yönetimine bütün bir çözüm getiren bir projedir. İyi bir Nesne/İlişkisel

Eşleme aracıdır. Uygulamaların, ilişkisel veri tabanı ile etkileşimine aracılık eder. Basit bir Java nesnesini kalıcı hale gelmesini ve kaydedilmiş kalıcı nesneyi geri yüklememizi basit komutlarla sağlar. Buda geliştiricinin sadece iş mantığına odaklanmasını sağlar. Takip edilmesini gerektiren belli katı kuralları yoktur. Bu sayede hem yeni hemde var olan projelere herhangi bir değişiklik gerektirmeden başarılı bir şekilde uyum sağlar. Java dünyasında ilişkisel veri tabanlarına ilk erişim yöntemi JDBC olmuştur. Fakat burada basit sorgulama komutlarını dahi elle yazmamız gerekiyordu. Bu da geliştiriciye büyük yük getiriyordu. Bu yüzden yazılan uygulama kodları da veri yapısına bağımlıydı. Yazdığımız nesneye dayalı kodlamaya rağmen veriye erişim nesnesel olmayan bir şekilde yapılıyordu. Nesneye Dayalı Programlama ile uğraşan geliştiriciler, veriye de yine nesneler ile ulaşmak ister. Bütün bu ihtiyaçları en iyi yerine getiren Hibernate oldu. Geliştiricisi Gavin King'e göre kalıcı nesneler, başka bir nesneden türetilmeyen basit Java nesneleri POJO(Plan Old Java Object) olmalıydı. Belirli katı standartları olmamalı ve güçlü bir sorgulama dilini desteklemeliydi. Ve bunların hepsi açık kaynak kodlu olmalıydı. Hibernate HQL adında SQL'e benzeyen bir sorgulama dilini destekler. Basit sorgulama cümleleri elle yazılmak yeri Hibernate tarafından otomatik olarak üretiliyor. Zorlu sorgulamalar nesnesel bir yapıya sahip olan HQL tarafından gerçekleştirilebilir. HQL'e yollanan parametre ve geri dönen değerler bundan böyle nesne yapısında olabilir. List elements=session.find( from com.test.musteri as m where m.isim=?, bilgihan,hibernate.string); Şekil 1.3 HQL Örneği Hibernate'in genel mimarisi Seki1.4 de gösteriliştir. Şekil 1.4 Hibernate İlişkisel Veri tabanı ile uygulama arasında etkileşimi sağlar. Hibernate önceden açılan bağlantıları tekrar hızlı bir şekilde kullanmayı sağlayan Bağlantı Havuzlarını ve okunan verinin yazılan veriden fazla olduğu durumda büyük performans sağlayan Önbellekleme 'yi destekler. C3P0, Proxool, Apache DBCP gibi bağlantı havuzlarını destekler. Hibernate'te iki şekilde önbellekleme yapılır. Session üzerinde tutulan önbellek olan Birinci Seviye Önbellek ile asıl zor olan, değiştirilebilir önbellek olan İkinci Seviye Önbellek'tir. Hangi önbelleğin hangi durumları içim kullanılacağı (Bknz. Şekil 1.5)de belirtilmiştir. Şekil 1.5 Önbelleklerin destekledikleri durumlar tablosu. OSCache + Hibernate Başarı Hikayesi Sony Online Entertainment İşletim Sistemi: Linux Kayıtlı kullanıcı: 200,000 Eşzamanlı aktif oturum: 10,000 Eşzamanlı page hit: 3,000 Gündelik toplam page hit sayısı: 1 milyon Kümedeki her bilgisayar için OSCache cache.capacity: 10,000 obje JVM Bellek: 1.3 GB Şekil 1.6 OSCache + Hibernate Başarı Hikayesi Yapılan testler Hibernate'in performansını gözler önüne sermiştir. Büyük ölçekli veri girdisi bulunan sistemlerde bunun etkisi daha iyi anlaşılacaktır. Testte şu sorulara cevap aranmıştır:(bknz. Şekil 1.7)

1. Hibernate in ürettiği SQL, optimal midir? 2. Hibernate altyapı kodları, kolon ve nesne özelliği eşlemesi yaparken fazla işlemci zamanı kaybediyor mu? 3. Hibernate i çok thread li ortamlarda kullandığımızda kitlenme durumu ortaya çıkabilir mi? Şekil 1.7 Test ortamı (Bknz. Şekil 1.8)'deki gibidir. Donanım Sun Sparc İşletim Sistemi Solaris 2.9 Java Versiyon 1.4 JVM Bellek 512 M DB Bağlantı Havuzu C3P0 DB Bağlantı Sayısı 50 Bağlantı Eşzamanlı Thread 200 Thread Hibernate Versiyon 1.7c Veri Tabanı MySQL(makine üzerinde) Şekil 1.8 Test Ortamı Test aracı olarak ve eşzamanlı iş parçacıklarının oluşturulmasıyla meydana gelen yükün ve sistemin bu yüke cevap zamanının ölçümü için Apache projesinin açık kaynak kodlu bir yazılımı olan JMeter aracı kullanılmıştır. Yapılan testte eşzamanlı olarak çalıştırılan 200 bağlantı 10 kere ardarda denenmiştir. Bilinmesi gerek başka noktada bu testte JDBCServlet ya da HibServlet url üzerinde eşzamanlı bağlantı açılarak yaratılan yüke karşın gelen sonuçların JMeter ile ortalama ölçülmesidir. Ölçüm sonuçları: Okuma-Yazma(Tek Makina): Analiz: Yukarıda ki testlerin ortak gösterdiği nokta uygulamalarda önbellek kullanımının, önbellek siz kullanımın ve JDBC kullanımından daha iyi olduğudur. EHCache okuma testinde OSCahce'den daha başarılı iken OSCache okuma-yazma testinde daha iyi başarı göstermiştir. İki makine üzerindeki JVM'lerin OSCahce'leri birbirlerine değişimleri bildirmek üzere iletişim halinde olmaları yavaş bir performans sergileyerek gibi gözükse de sonuçlar performansın oldukça iyi olduğunu göstermiştir. 5. Bölüm 5(Sağlık Bilgi Yönetim Sistemlerinde Uygulanması ) Yukarıda anlattığımız bu yardımcı ve performans arttırıcı araçların kullanımının web tabanlı Hastane Bilgi Yönetim Sisteminde uygulanması geliştirilmesinde önemi büyüktür. Bu tür bilgi yönetim sistemleri büyük miktardaki verilerle yoğun şekilde uğraşır. Bu nedenle önceki kısımlarda anlattığımız teknolojiler bize yazılımı geliştirmede büyük hız kazandıracak ve sorunsuz, hızlı çalışan sistemler geliştirmemize olanak tanıyacaktır. Şimdi size geliştirmekte olduğumuz HBYS uygulamasının burada geniş kısmını göstermemiz zor olduğu için çok küçük bir kısmında bu yararlı araçları nasıl kullandığımızı örnek sayfa üzerinde göstereceğiz. JDBC EHCache OSCache NOCACHE 310 433 443 553 257 223 330 398 224 212 358 366 211 211 310 336 206 210 250 270 203 198 238 258 191 171 205 247 189 171 197 249 184 168 199 222 183 166 191 217 199 154 186 210 196 154 183 210 189 162 181 205 193 162 169 203 168 201 174 203 164 158 155 Şekil 1.9 Peki buraya kadar anlattığımız teknolojiler yardımıyla geliştireceğimiz web

tabanlı bir HBYS uygulamasının avantajları ve dezavantajları nelerdir? Geliştirici için ele alırsak, anlattığımız model ve araçlar desteğinde Java programlama dili ile nesneye dayalı bir şekilde programlama yapılabilmesi ve bununla beraber de birim denemelerin(junit) kullanımı, hata ayıklama(debug) yetenekleri yazılım geliştiricinin sorunsuz ve başarımı yüksek uygulamaları hızla geliştirmesine olanak sağlar. Yine Java diliyle kazanılan platformdan bağımsız yapı uygulamamızın taşınabilir olmasını sağlar. Modüller ve formlar arasındaki ilişkilerin ve yönlendirmelerin merkezi bir şekilde yapılabilmesi geliştiricinin program akışında olan biteni takip etmesinde büyük rahatlık sağlayan esnek yapıyı oluşturur. Ortaya çıkan ürün açısından ise çok katmanlı yapısı sayesinde, yoğun veri akışının sağlandığı sistemimizde, fiziksel bir sorundan dolayı ağ iletiminde oluşabilecek sorunlardan kaynaklanabilecek veri kaybının önüne geçmiş oluyoruz. Bu konu ise veri iletiminin başarılı ve sorunsuz gerçekleştirilmesinin hayati önem taşıdığı HBYS gibi sistemlerde çok büyük bir ihtiyaçtır. Uygulamanın sunucu taraflı olması ise sisteme hızlı bir şekilde müdahale etmemizi bu sayede de uygulamamızda güncelleme, düzeltme, kontrol ve takip gibi işlemlerin İnternet bağlantısı sayesinde çok uzak noktalardan başarı ile yapılmasını sağlar. Sunucu taraflı uygulama sayesinde iş yükü de istemci makinelerden alınmış olur. Bu sayede ise müşteri için hem ekonomik tasarruf sağlanmış olur hemde sistemde istemci makinelerden kaynaklanacak sorunlarının önüne geçilmiş olunur. Burada dikkat edilecek hususlar ise sunucu makinelerinin donanımsal olarak(ram,cpu vs...) güçlü olması gerektiği ve http saldırıların arttığını göz önüne alarak sistemimizde firewall gibi donanımsal ya da Kerberos kimlik doğrulaması gibi uygulamaların kullanılmasıdır. SONUÇ: Buraya kadar geliştiricilerin çeşitli programlama tekniklerinden ve geliştiriciye yardımcı olan, uygulamanın performansını arttıran model ve araçlardan bahsettik. Artık kurum yazılımları hızla internet ortamına geçmektedir. Çeşitli ihtiyaçlar bunu gerektirmektedir. Bizim uygulamamızın da internet üzerinde çalışabilmesi birçok açıdan fayda sağlayacaktır. Struts Framework'ün projemize, takibi ve anlaması kolay bir yapı kazandırır. Özellikle de Java ile web tabanlı proje geliştiricilerinin mutlaka bilmesinin ve uygulamasının verimli çalışmalarında çok büyük önemi vardır. Nesneye Yönelik Programlama geliştiren kişileri ilişkisel veri tabanı yapan işlemlerle ne kadar içli dışlı olduğunu biliyoruz. Hibernate bu geliştiricilere sadece iş mantığına odaklanmalarını sağlar. Veri tabanına bağlanmayı nasıl yapacağına, basit sorgulama cümlelerini geliştiricinin ellerinden alarak kendisi otomatik olarak yapar ve geliştiriciye algoritma mantıklarını daha hızlı geliştirmeleri için bol vakit bırakır. Bu işlemleri hibernate'e bırakırken de kendileri sadece nesneye yönelik programlama ile ilgi işlemler yapmış olacaklar. Bununla beraber de testlerde görüldüğü gibi etkin önbellek kullanımı sayesinde büyük ölçekli veri işlemlerini oldukça performanslı bir şekilde yerine getirebilecek kabiliyete sahiptir. Bu tür teknolojilerin veri yoğunluğu çok olan HBYS gibi uygulamaları, bizim gibi cesaret gösterip web tabanlı olarak gerçekleştirmek isteyenler için biçilmiş kaftan olduğunu anladık. Kaynaklar: [1]J2EE development frameworks Johnson, R.;Computer Volume 38, Issue 1, Jan. 2005 Page(s):107-110 Digital Object Identifier 10.1109/MC.2005.22 [2]Davis, M., 'Struts, an open-source MVC implementation', http://www- 128.ibm.com/developerworks/ibm/library/j-struts/, 01.02.2001 [3]King, G. ve Bauer, C. Hibernate In Action, Manning Publications, 2004. [4]Bayraml ı, B., Hibernate Performans Tesi, 02 Ş ubat. 2005 [5]Hibernate Reference Documantation,docs.jboss.org/ejb3/app-server/ Hibernate3/ reference/en/pdf/hibernate_reference.pdf