Anasayfa »
ORM, Hibernate, Spring Data ve JPA Kavramları Nedir?
Yazar:
Ali Arslan
Bu yazıda en basit tanımıyla ORM, Spring Data ve JPA kavramlarından bahsettim. Olabildiğince basit, kafa karıştırmayacak şekilde bir içerik olmasına özen gösterdim. Daha fazla bilgi edinmek isteyenler için konu altında gerekli kaynakları ekledim. Konu ile ilgili yorumlarınızı yorum formu üzerinden iletebilirsiniz. Faydalı olması dileğiyle.
Konuyla ilgili internetteki kaynaklarda verilmiş şu benzetmeler gayet hoşuma gitti.
Yazıyla paralel olarak yararlanabileceğiniz kaynaklar :
- ORM toolları nesne tabanlı programlamada bulunan objeler ile veritabanı sistemimizdeki tablolar arasında köprü görevi kurulmasını sağlar.
- ORM bir konsepttir. Yani model ile veritabanı arasında kurulması gereken konseptin adıdır. Bir araç değildir.
- Hibernate gibi EclipseLink, OpenJPA, TopLink gibi birçok farklı ORM aracı bulunmaktadır
- ORM toollarından önce yazılımcılar, modeldeki tanımlamaları veritabanındaki tablolarla eşleştirecek kodlar yazıyorlardı.
Hibarnate
- ORM’nin bir aracıdır. ORM konseptini uygulayan bir araçtır.
- JPA'nın implementasyonudur.
JPA - Java Persistence Api
- Java’nın persistence (kalıcılaştırma) apisi olarak geçer. Persistence kelimesi ise uygulama tarafında, veritabanındaki tablo yapısına denk gelen bir model oluşturmak ve bu modele gerekli dataları set etmek anlamına gelmektedir. Bu objeye ait datalar JPA tarafından veritabanına kayıt edilmek üzere kullanılmaktadırlar.
- JPA aslında Hibernate, EclipseLink, DataNucleus gibi diğer persistence apilerin birleştirilmesiyle oluşmuştur.
- JPA bir standarttır. Hibernate, EclipseLink gibi ORM toolları, JPA'nın implementasyonlarıdırlar.
- JPA sayesinde ORM toolları arasından istediğimiz birini kullanabilmekteyiz.
Konuyla ilgili internetteki kaynaklarda verilmiş şu benzetmeler gayet hoşuma gitti.
“JPA is the dance, Hibernate is the dancer.”
“JPA is the art, Hibernate is the artist."
Spring Data JPA
- Hibernate gibi JPA Provider’ların üzerine ek bir soyutlama katmanı ekleyerek veritabanın sorguları kolaylaştırılmıştır.
- Sprin Data JPA kullanırsak Repository sınıfımız şöyle olacaktır. En üstte Spring Data JPA > Spring Data Commons > JPA Provider
- Spring Data Commons, veri kaydetmeye özgü Spring Data projeleriyle paylaşılan altyapıyı sağlar.
- JPA Provider, Hiberbate gibi Java Persistence API’leri implement eder.
JpaRepository, CrudRepository ve PagingeAndSortingRepository
- JpaRepository, Spring Data'da kullanılan interface'tir. (https://docs.spring.io/spring-data/jpa/docs/current/api/org/springframework/data/jpa/repository/JpaRepository.html)
- CrudRepository sadece Crud işlemlerini barındırır.
- PagingAndSortingRepository sadece sıralama ve sayfalama fonksiyonlarını barındırır.
- JpaRepository, CrudRepository ve PagingAndSortingRepository sahip olduğu tüm fonksiyonları barındırır.
- @CrudRepository @JpaRepository https://stackoverflow.com/questions/14014086/what-is-difference-between-crudrepository-and-jparepository-interfaces-in-spring
- ORM ve Hibernate https://medium.com/@tugrulbayrak/hibernate-1-orm-kavramına-giriş-c2ba2f2a3bfe
- JPA ve Entity https://medium.com/@tugrulbayrak/hibernate-2-jdbc-jpa-entity-hibernate-kurulum-konfigürasyon-mysql-30fa801a0840
- Spring Data JPA https://www.javaguides.net/2018/11/spring-data-jpa-tutorial-getting-started.html
@SpringBootApplication, @Bean, @Configuration, @Component Nedir?
Yazar:
Ali Arslan
Daha önceki yazımda en temel ve en yaygın olarak kullanılan Spring anotasyonlarından ve onların çalışma mantığından bahsetmiştim. Kısa ve öz bir şekilde anlattığım temel anotasyonlar ve çalışma mantıkları konulu yazıya şuradan ulaşabilirsiniz :
Spring Anotasyonlarının Çalışma Mantığı ve Temel Anotasyonlar
Yazar:
Ali Arslan
Bu yazıda en basit şekilde anotasyonların çalışma mantığı yer almaktadır. Ayrıca kısa ve öz bir şekilde, en çok kullanılan anotasyonlara, çalışma mantıklarına ve benzer anotasyonarla aralarındaki farklara değindim. Daha fazla bilgi edinilebilmesi adına yazı sonuna kaynakça listesi ekledim. Konuyla ilgili yorum ve görüşlerinizi yanın en altındaki yorum formu üzerinden iletebilirsiniz.



