- 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
Güzel yazı
YanıtlaSilŞu ana kadar denk geldiğim en sade ve açıklayıcı yazı. Teşekkür ederim.
YanıtlaSilBir sonraki adım olarak yatayda ve dikeyde genişlerse tadından yenmez.
Değerli yorumunuz için çok teşekkür ederim aslında vakit bulabilsem yazmak istediğim çok şey var ama gerekli vakti bulamıyorum maalesef. Yazının faydalı olmasına sevindim.
Sil