25 Ocak 2016 Pazartesi

Mybatis yapılandırma ayarları (Mybatis Configuration Settings)

Mybatis, bir ORM(Object Relational Mapping) aracıdır. Database'deki verilerimizi class yapıları ile modeller ve developer'ı büyük bir yükten kurtarır.Yani database'deki bir kaydı nesneleştirerek kullanmamızı sağlar. Select, insert, update, delete gibi işlemleri esnek bir şekilde yapmamızı sağlar. Hibernate (farklı bir ORM aracı) ile kıyaslandığında bir takım artıları ve eksikleri vardır. Fakat konumuz bu olmadığı için bu konuyu sizin araştırmanıza bırakıyorum. Fakat emin olabilirsiniz ki Mybatis bir çok kurumsal firmada yoğun bir şekilde kullanılmaktadır. Bu konudaki Türkçe dökümanın azlığı benim ilgimi çekti ve böyle bir döküman oluşturmaya karar verdim. Eclipse üzerinde Mybatis yapılandırması için öncelikle sqljdbc4.jar'ına veya bunun farklı sürümlerine ihtiyacınız vardır. Ben resimde görüldüğü üzre bunu indirerek masa üstüme kaydettim.



Daha sonra Eclipse üzerinde MybatisTest isimli bir java projesi oluşturdum ve bir mybatis folder'ı ekledim.

 

Daha sonra ihtiyacımız olan mybatis jar dosyasını indirdim.



Proje hiyerarşisini aşağıda olduğu gibi düzenleyin. Config folder'ı içerisinde configuration ayar dosyalarımızı barındıracağız. Ben önce generatorConfig.xml dosyasını oluşturmuşum. Kısaca bu xml dosyası bize database'i kullanarak model oluşturmada yardımcı olacak dosyadır.
sqljdbc4.jar dosyasını ve mybatis-3.3.0.jar dosyalarını proje üzerine sağ tıklayarak Build Path > Configure Build Path > Libraries tab ve Add External Jars seçeneği ile projeye dahil ettim. Aşağıdaki gib Referenced Library bölümünde jar'ları göreceksiniz. Tıpkı bu yaptığımız işlem gibi indirmiş olduğunuz mybatis zip dosyası içinde bulunan log jarlarını da eklemeniz de fayda var. Hata esnasında hatayı neden kaynaklı ve nasıl çözebileceğiniz hakkında yardımcı olurlar.



Bir başka önemli nokta ise bağlanacağınız database Microsoft Sql Server ise sqljdbc_auth.dll dosyasına ihtiyacınızın olmasıdır. Database'e authentication(kimlik kanıtlama) esnasında bu dosyaya ihtiyaç vardır. Bu .dll dosyası indirmiş olduğum sqljdbc zip dosyasının içinde mevcut. sqljdbc_auth.dll dosyasını kopyalayıp C:\Windows\System32 klasörünün içine atmalısınız.
Ben database'e Windows Authentication modunda bağlanıyorum. Yani bana parola falan sormuyor. Bu durumda connection stringimiz biraz farklılık gösterir. Aşağıda <connctionUrl> tag'ı içerisinde görebilirsiniz.



generatorConfig.xml dosyamın içeriği yukarıda görülmektedir. Bu dosyada bazı yapılandırma ayarlarıyla beraber <table> tag'ı içerisinde database'de CUSTOMER isminde bir tablonun olduğu ve bu tabloyu Customer class ile modellemeyi istediğimi belirtmişim. İkinci yapılandırma dosyamız yine config içine oluşturulan MapperConfig.xml dosyasıdır. Aşağıda onun içeriğini görüntülemektesiniz.



mapper tag'ı şu an boş fakat generate etme işleminden sonra oluşacak mapper'ın path'i ile resource alanını doldurmalısınız. Bir diğer yapılandırma dosyası bir java classı olan SessionFactory.java'dır.



Bu class içerisinde ilgili mapperXML gibi yapılandırma ayarları yükleniyor. Eğer üstte bahsettğim gibi generate işleminden sonra MapperConfig.xml dosyasına mapper'ı vermezseniz mapper'ı bulamıyorum diye bir hata alırsınız. Bu kritik bir nokta.

Son yapılandırma ayarımız bir ant dosyası içinde olacaktır. Build etme işlemini ant file üzerinden yapacağız. Proje üzerine sağ tıklayın New>Other ve Ant Files seçneğini seçin.






Size .xml ve .properties uzantılı iki tane dosya oluşacak. İsimlerini benim yaptığım gibi güncelleyebilirsiniz.



Bütün configuration dosyalarımızı yukarıdaki hiyerarşide görüntülüyorsunuz.

Bu generate etme(model oluşturma, ya da bizim CUSTOMER tablosunu Customer sınıfı haline getirme diye basit bir şekilde açıklayayım) işlemini mybatis-generator jar'ı ile yapacağız. Onu şuradan indirin.



Şimdi runGenerator.xml dosyasını aşağıdaki şekilde kendinize uygun olarak güncelleyiniz.



Bütün yapılandırma ayarlarını halletmiş bulunuyoruz. Son olarak generate etme işlemini gerçekleştireceğiz. Son oluşturduğumuz runGenerator.xml dosyasına sağ tıklayın ve Run As> Ant Build seçenekleri ile build edin.



Aşağıda resimde görüldüğü üzere belirttiğimiz alanlarda istediğimiz class'lar, xml'ler oluştu. Oluşan CustomerMapper.xml dosyamızı MapperConfig.xml'e ekledik. Her şey tamam.



Şimdi bir test edelim ve çalıştığını görelim. Test isminde bir class oluşturup içini aşağıdaki şekilde düzenledim. Test.java sınıfına Run As > Java Application şeklinde çalıştırdım.




Customer tablosunda bulunan iki kayıda gördüğünüz üzre kolaylıkla eriştim. Yukarıda basitçe bir select sorgusu gördünüz. Bu query konusunu ilerleyen durumlarda daha açıklayıcı ve komplex örneklerle anlatmayı planlıyorum. Mybatis yapılandırması bu kadar. Kolay gelsin.

Uygulamanın kodlarını bu adreste bulabilirsiniz :
https://github.com/emresevinc/MyRepo-Mybatis