Kayıtlar

Spring Boot ve Hibernate Anotasyonları

Resim
@SprinBootApplication         Spring uygulamasının giriş classını belirtir. Bu anotasyonun olduğu classın main metodunda bulunan SpringApplication.run işlemi ile spring boot uygulamamızın on yüklemesini yaparız böylece uygulama bağlamı oluşturulacak, beanler kaydedilecek ve varsayılan olarak gömülü olan tomcat gibi gömülü sunucuyu başlatılacaktır.. @RequestMapping         @Controller ile işaretlenen sınıfa gelen HTTP isteklerinin path eşleştirmesini yapar. Bir sınıf üzerinde @RequestMapping(path="api",method=RequestMethod.GET) şeklinde kullanılırsa kullanılan sınıfın api şeklinde gelen URL ile ilgili tüm işleri yapması sağlanır. Metotlar üzerinde de kullanımı vardır. Eğer metot üzerinde @RequestMapping(path="ilGetir") şeklinde kullanılırsa ilGetir şeklindeki isteklerde bu metot çalışır. Diğer RequestMethod türleri ise GET -> Sorgulama (SELECT) POST -> Kaydetme (INSERT) PUT -> Güncelleme(UPDATE) DELETE -> Silme (DELETE) ve PATCH -> Verinin bir bölümünü

Mikroservis Nedir?

               Mikro servisler teknoloji değil bir mimari yaklaşımdır. Tek parça (monolitik) ve karmaşık uygulamaların, her bir parçanın kendi sorumluluk alanına sahip olduğu, birbiriyle iletişim kurabilen daha küçük bağımsız parçalara ayrılmasına denir. Gerçek hayattan örnek verecek olursak bir market çalışanının işinin sadece müşterinin aldığı ürünleri paketlemek olduğunu varsayalım burada çalışan aynı işi yaptığı için hem çalışan yaptığı işte uzmanlaşır hem de çalışanın yaptığı iş daha kolay takip edilebilir. Aynı zamanda bu çalışanın işten ayrılması kasadaki ödeme işlerini etkilemez kısa sürede o çalışanın yeri doldurulabilir. Yani sistemin küçük bir parçasında duraksama yaşanırsa kalan parçalar bu duraksamadan en az şekilde etkilenir.              Mikroservis mimarisi ile tasarlanan sistemlerde ölçeklendirme kolaydır servisler küçük parçalar halinde tasarlandığından cevik yazılım metodolojisi sunar kodda değişiklik kolaydır. Her bir servis istenildiği gibi tasarlanabilir kullan

Kubernetes Nedir?

                 Konteyner teknolojisi olarak dockerdan bahsetmiştik. Şimdi sıra bu docker konteynerlerini yönetmeye geldi. Konteynerleri yönetmek için kullanılan birçok araç mevcut, bunlardan en popüler olanlarından biridir Kubernates.                Kubernetes, konteyner barındıran sistemlerin orkestrasyonu  için yapılmış bir üründür. Burada orkestrasyondan kasıt uygulamanın dağıtımı, ölçeklendirilmesi ve yönetilmesidir. Genel olarak Kubernetes ile aşağıdaki işlemleri yapabilirsiniz: Otomatik ölçeklendirme Konteynerler arasındaki etkileşimin güvenliği Sürümleri kontrol etme Kaynak tahsisi ve yönetimi Yük dengeleme ağ trafiğini dağıtma Zamanlayıcı Hizmet keşfi

Docker Nedir?

            Docker açık kaynak kodlu bir konteyner teknolojisidir. Bir işletim sistemi üzerinde birbirinden bağımsız bir çok konteyner sayesinde sanallaştırma yapılmasını sağlar.              Docker aslında sanal makinelerle benzerlik gösterir fakat docker teknolojisi sanal makinelere göre daha az kaynak tüketir ve daha hızlıdır. Fiziksel sunucu üzerinde çalıştırılan her bir sanal makineye dockerda container(kapsayıcı) denir.              Containerler (kapsayıcı), bir uygulama için gereken kitaplıkları, kodları, araçları, bağımlılıkları ve Dockerfile adı verilen containerlar içindeki imagelerın registration işlemlerinin bulunduğu yapılandırma dosyasını içeren bir yazılım paketini temsil eder. Containerler fiziksel sunucu üzerinde bulunan diğer containerlerden bağımsız ve yalıtılmıştır .                          Docker avantajları : Hızlı başlatma ve hızlı deployment süreci, kolay yönetim ve ölçeklendirme, daha az kaynak kullanımı, farklı işletim sistemlerine destek vermesi, popül

Hibernate Nedir?

               Veri tabanındaki tablolar ile POJO sınıflarını eşleştirip map ederek verilere hızlı bir şekilde CRUD(Create Read Update Delete) işlemleri yapmamızı sağlayan java nesnelerini bir veritabanına kalıcı hale getırmek veya kaydetmek için kullanılan bir frameworktür. Java için geliştirilmiş Populer bir ORM aracıdır.  Düşük seviyeli sql kodları yazmamızı saglar ve JDBC kodlarını en aza ındirir               Hibernate ile oluşturduğumuz POJO claslarının veri tabanı tablolarına dönüşümünü yada tam tersi olan veri tabanında oluşturulan veya daha önceden oluşturulmuş olan tabloların POJO classlarına dönüştürülmesi işlemini kolayca yapabiliriz. Hibernate bizim için SQl sorgusu ile uğraşmadan transaction yönetimi ile uğraşmadan zahmetsizce uygulama geliştirmemizi sağlar. Neredeyse hiç SQL yazmadan kod geliştirebiliriz.              Bir hibernatete veri tabanına kayıt eklemek aşağıdaki gibi yapılır. Örneğin hibernate tablomuz olsun ve bu tabloya kayıt eklemek istiyoruz hybernatenin

ORM (Object Relational Mapping) Nedir?

ORM (Object Relational Mapping)             ORM (Object Relational Mapping) en basit haliyle sınıflarımız (POJO) ile veri tabanımız arasında oluşan bir köprüdür. Yani ilişkisel veri tabanı ile nesne modellerimizi yönetmek için kullandığımız bir tekniktir.             ORM nin avantajlarından bahsedersek veri tabanı bağımsız bir yapıda kod yazmamızı sağlar. JDBC yada SQL ile uğraşmadan zahmetsizce veri tabanı bağlantısı ve sorgulamaları yapmamıza olanak sağlar.             Dez avantajları arasında ORM öğrenmenin zorluğu ve karmaşıklığı ile yüksek performans gerektiren uygulamalar için performansının düşük kalması söylenebilir.             Java için en yaygın kullanılan ORM araçları: Hibernate ve JPA (Java Persistence API)

CI(Continuous Integration) / CD(Continuous Delivery)

             CI/CD, istediğiniz zaman sürdürülebilir bir şekilde yayınlayabileceğiniz yazılım geliştirme yoludur.              Yazılım projelerinde son aşamaya gelindiğinde yazdığımız projeyi test veya production(son kullanıcı/müşteri tarafından aktif olarak kullanılan) ortama göndermek istediğimizde, yaptığımız yeni geliştirme ve değişikliklerin mevcut yapıyı bozmadığından emin olmak önemlidir. Ayrıca, yapılan geliştirmelerin kurulumu sırasında kimi zaman insan kaynaklı hatalar(eksik/hatalı dosya, fazla dosya silme vs.) da yaşanabilmektedir.  Neden CI/CD ihtiyacı duyarız? Tekrar eden işleri otomatize hale getirir. Tüm testlerin kontolünü sağlar. Kod kalitesini arttırır. Büyük projelerde uzun süren kurulum süreçlerinde insan payını indirir ve zamandan tasarruf sağlar. Paketin kuruluma hazır olup olmadığını denetler. Continuous Integration Nedir?              Yaptığımız yeni geliştirmelerin kendi belirlediğimiz koşul doğrultusunda (master'a merge geldiğinde, pu