logo

Bahar Önyükleme JPA

JPA nedir?

Bahar Önyükleme JPA yönetmek için kullanılan bir Java spesifikasyonudur ilişkisel Java uygulamalarındaki veriler. Java nesnesi/sınıfı ile ilişkisel veritabanı arasındaki verilere erişmemize ve verileri sürdürmemize olanak tanır. JPA takip ediyor Nesne-İlişki Haritalaması (ORM). Bir dizi arayüzden oluşur. Aynı zamanda bir çalışma zamanı sağlar Varlık Yöneticisi Nesnelerdeki sorguları ve işlemleri veritabanına göre işlemek için API. Platformdan bağımsız nesne yönelimli bir sorgu dili olan JPQL'yi (Java Persistent Query Language) kullanır.

Kalıcılık bağlamında üç alanı kapsar:

  • Java Kalıcılık API'si
  • Nesne-İlişkiselmeta veri
  • API'nin kendisi, şu şekilde tanımlanır: sebat paket

JPA bir çerçeve değildir. Herhangi bir çerçeve tarafından uygulanabilecek bir konsepti tanımlar.

Neden JPA kullanmalıyız?

JPA, JDBC, SQL ve elle yazılan haritalamaya göre daha basit, daha temiz ve daha az emek gerektirir. JPA, performans odaklı olmayan karmaşık uygulamalar için uygundur. JPA'nın JDBC'ye göre temel avantajı, JPA'da verilerin nesneler ve sınıflar tarafından temsil edilmesi, JDBC'de ise verilerin tablolar ve kayıtlar tarafından temsil edilmesidir. Veritabanı programlamayı basitleştiren kalıcı verileri temsil etmek için POJO'yu kullanır. JPA'nın başka avantajları da vardır:

  • JPA, DDL'yi SQL'in veritabanına özgü bir lehçesinde yazmaktan kaçınır. Bunun yerine XML'de eşlemeye veya Java ek açıklamalarının kullanılmasına izin verir.
  • JPA, DML'yi SQL'in veritabanına özgü lehçesinde yazmaktan kaçınmamızı sağlar.
  • JPA, Java nesnelerini ve grafiklerini herhangi bir DML dili olmadan kaydetmemize ve yüklememize olanak tanır.
  • JPQL sorgu yapmamız gerektiğinde sorguları (yerel) SQL tablosu ve sütunları yerine Java varlıkları cinsinden ifade etmemize olanak tanır.

JPA Özellikleri

JPA'nın aşağıdaki özellikleri vardır:

  • Güçlü bir depo ve özeldir nesne haritalama soyutlaması.
  • Şunun için destekler: mağazalar arası kalıcılık . Bu, bir varlığın kısmen MySQL ve Neo4j'de (Grafik Veritabanı Yönetim Sistemi) depolanabileceği anlamına gelir.
  • Sorgu yöntemleri adından dinamik olarak sorgular oluşturur.
  • Etki alanı temel sınıfları temel özellikleri sağlar.
  • Şeffaf denetimi destekler.
  • Özel depo kodunu entegre etme imkanı.
  • Özel ad alanıyla Spring Framework ile entegrasyon kolaydır.

JPA Mimarisi

JPA, ticari varlıkları ilişkisel varlıklar olarak depolamak için bir kaynaktır. Bir POJO'nun bir varlık olarak nasıl tanımlanacağını ve varlıkların ilişkiyle nasıl yönetileceğini gösterir.

android'de engellenen numaralar nasıl bulunur

Aşağıdaki şekil, JPA'nın çekirdek sınıflarını ve arayüzlerini açıklayan, JPA'nın sınıf düzeyindeki mimarisini açıklamaktadır. javax kalıcılığı paket. JPA mimarisi aşağıdaki birimleri içerir:

    Kalıcılık:EntityManagerFactory örneğini elde etmek için statik yöntemler içeren bir sınıftır.Varlık Yöneticisi Fabrikası:EntityManager'ın fabrika sınıfıdır. Birden fazla EntityManager örneğini oluşturur ve yönetir.Varlık Yöneticisi:Bu bir arayüzdür. Nesneler üzerindeki kalıcılık işlemlerini kontrol eder. Query örneği için çalışır.Varlık:Varlıklar, veritabanında kayıt olarak depolanan kalıcı nesnelerdir.Kalıcılık Birimi:Tüm varlık sınıflarının bir kümesini tanımlar. Bir uygulamada EntityManager örnekleri bunu yönetir. Varlık sınıfları kümesi, tek bir veri deposunda bulunan verileri temsil eder.Varlık İşlemi:Bir bire bir EntityManager sınıfıyla ilişki. Her EntityManager için işlemler EntityTransaction sınıfı tarafından sürdürülür.Sorgu:Kriterleri karşılayan ilişki nesnelerini elde etmek için her JPA satıcısı tarafından uygulanan bir arayüzdür.
Bahar Önyükleme jpa

JPA Sınıf İlişkileri

Yukarıda tartıştığımız sınıflar ve arayüzler bir ilişkiyi sürdürür. Aşağıdaki şekil sınıflar ve arayüzler arasındaki ilişkiyi göstermektedir.

Bahar Önyükleme jpa
  • EntityManager ve EntiyTransaction arasındaki ilişki şu şekildedir: bire bir . Her EntityManager işlemi için bir EntityTransaction örneği vardır.
  • EntityManageFactory ve EntiyManager arasındaki ilişki şu şekildedir: bire çok . EntityManager örneğinin fabrika sınıfıdır.
  • EntityManager ve Query arasındaki ilişki bire çok . EntityManager sınıfının bir örneğini kullanarak istediğimiz sayıda sorguyu çalıştırabiliriz.
  • EntityManager ve Entity arasındaki ilişki şu şekildedir: bire çok . Bir EntityManager örneği birden fazla Varlığı yönetebilir.

JPA Uygulamaları

JPA açık kaynaklı bir API'dir. JPA'yı ekleyerek yeni ürünler sunan Eclipse, RedHat, Oracle vb. çeşitli kurumsal satıcılar vardır. Bazı popüler JPA uygulama çerçeveleri vardır: Hazırda Beklet, EclipseLink, DataNucleus, vb. olarak da bilinir. Nesne-İlişki Haritalaması (ORM) aracı.

Nesne İlişkisi Haritalaması (ORM)

ORM'de, Java nesnelerinin veritabanı tablolarıyla eşleştirilmesine veya bunun tersi denir. Nesne-İlişkisel Haritalama. ORM eşlemesi bir köprü görevi görür. ilişkisel veritabanı (tablolar ve kayıtlar) ve Java uygulaması (sınıflar ve nesneler).

Aşağıdaki şekilde ORM katmanı bir adaptör katmanıdır. Nesne grafiklerinin dilini SQL ve ilişki tablolarının diline uyarlar.

Bahar Önyükleme jpa

ORM katmanı, uygulama ile veritabanı arasında bulunur. Java sınıflarını ve nesnelerini ilişkisel bir veritabanında saklanabilecek ve yönetilebilecek şekilde dönüştürür. Varsayılan olarak, kalıcı olan ad tablonun adı olur ve alanlar sütunlara dönüşür. Bir uygulama kurulduğunda her tablo satırı bir nesneye karşılık gelir.

JPA Sürümleri

EJB'nin önceki sürümleri, iş mantığı katmanıyla birleştirilmiş kalıcılık katmanını aşağıdakileri kullanarak tanımlar: javax.ejb.EntityBean Arayüz. EJB spesifikasyonu JPA'nın tanımını içerir.

EJB 3.0 tanıtılırken kalıcılık katmanı ayrılarak JPA 1.0 (Java Persistence API) olarak belirlendi. Bu API'nin spesifikasyonları JAVA EE5 spesifikasyonlarıyla birlikte 11 Mayıs 2006'da JSR 220 kullanılarak yayımlandı.

2019'da JPA'nın adı şu şekilde değiştirildi: Cakarta Kalıcılığı . JPA'nın en son sürümü 2.2 . Aşağıdaki özellikleri destekler:

  • Java 8, veri ve zaman API'si
  • AttributeConvertes'ta CDI Enjeksiyonu
  • @Tekrarlanabilir açıklamalar yapar

JPA ve Hazırda Bekletme arasındaki fark

JPA: JPA, Java nesnesi ile ilişkisel veritabanı arasındaki verilere erişmek, bunları yönetmek ve sürdürmek için kullanılan bir Java spesifikasyonudur. ORM için standart bir yaklaşımdır.

Hazırda bekletme: Java nesnelerini ilişkisel veritabanı sisteminde depolamak için kullanılan hafif, açık kaynaklı bir ORM aracıdır. JPA'nın sağlayıcısıdır. JPA tarafından sağlanan ortak bir yaklaşımı izler.

Aşağıdaki tabloda JPA ve Hazırda Bekletme arasındaki farklar açıklanmaktadır.

JPA Hazırda bekletme
JPA bir Java spesifikasyonu Java uygulamasında ilişki verilerini eşlemek için. Hazırda Bekletme bir ORM çerçevesi veri kalıcılığıyla ilgilenir.
JPA herhangi bir uygulama sınıfı sağlamaz. Uygulama sınıfları sağlar.
Platformdan bağımsız sorgu dilini kullanır. JPQL (Java Kalıcılık Sorgu Dili). Adı verilen kendi sorgu dilini kullanır. HQL (Hazırda Bekletme Sorgu Dili).
Tanımlanmıştır javax.persistence paket. Tanımlanmıştır kuruluş. hazırda bekletme paket.
Gibi çeşitli ORM araçlarında uygulanır. Hazırda Beklet, EclipseLink, vesaire. Hazırda Bekletme modu Sağlayıcı PSD'den.
JPA kullanımları Varlık Yöneticisi Verilerin kalıcılığını yönetmek için. Hazırda Bekletme kullanımlarında Oturum Verilerin kalıcılığını yönetmek için.

Spring Boot Başlangıç ​​Verileri JPA

Spring Boot, başlangıç ​​bağımlılığı sağlar bahar-önyükleme-başlatıcı-veri-jpa Spring Boot uygulamasını ilişkisel veritabanına verimli bir şekilde bağlamak için. Spring-boot-starter-data-jpa dahili olarak spring-boot-jpa bağımlılığını kullanır.

 org.springframework.boot spring-boot-starter-data-jpa 2.2.2.RELEASE 

Spring Boot JPA Örneği

Veritabanına bağlanmak için JPA kullanan bir Spring Boot uygulaması oluşturalım. Aşağıdaki örnekte bellek içi veritabanını kullandık Apaçi Derbisi.

Apaçi Derbisi: O bir açık kaynak, gömülü Tamamen Java'da uygulanan ilişkisel veritabanı. Apache Lisansı 2.0 kapsamında mevcuttur. Apache Derby'nin aşağıdaki avantajları vardır:

  • Kurulumu, dağıtımı ve kullanımı kolaydır.
  • Java, JDBC ve SQL standartlarına dayanmaktadır.
  • Derby'yi herhangi bir Java tabanlı çözüme yerleştirmemize olanak tanıyan yerleşik bir JDBC sürücüsü sağlar.
  • Ayrıca Derby Network Client JDBC sürücüsü ve Derby Network Server ile istemci/sunucu modunu da destekler.

Spring Boot, aşağıdaki gibi gömülü bir veritabanını otomatik olarak yapılandırabilir: H2, HSQL, Ve Derby veritabanları . Herhangi bir bağlantı URL'si sağlamamıza gerek yoktur. Kullanmak istediğimiz gömülü veritabanına yalnızca bir yapı bağımlılığı eklememiz gerekiyor.

Spring Boot'ta Apache Derby veritabanını yalnızca şunu ekleyerek kolayca entegre edebiliriz: Derbi pom.xml dosyasındaki bağımlılık.

 org.apache.derby derby runtime 

Aşama 1: Spring Başlatıcıyı Aç https://start.spring.io/ .

string'i int'ye nasıl dönüştürebilirim?

Adım 2: Spring Boot'un en son sürümünü seçin 2.3.0(ANLIK GÖRÜNTÜ)

Aşama 3: Sağlamak Grup isim. Sağladık com.javatpoint.

Adım 4: Sağlamak eser İD. Sağladık apache derbi örneği .

Adım 5: Bağımlılıkları ekleyin: Bahar Webi, Bahar Verileri JPA, Ve Apache Derby Veritabanı .

Adım 6: Tıkla Oluştur düğme. Generate butonuna tıkladığımızda projeyi Jar dosyası içerisine sararak yerel sisteme indiriyor.

Bahar Önyükleme jpa

Adım 7: Çıkarın Jar dosyasını açın ve STS çalışma alanına yapıştırın.

Adım 8: İçe Aktarma proje klasörünü STS'ye aktarın.

Dosya -> İçe Aktar -> Mevcut Maven Projeleri -> Gözat -> Apache-derby-example klasörünü seçin -> Son

İthalat biraz zaman alıyor.

Adım 9: Adıyla bir paket oluşturun com.javatpoint.model klasörde src/ana/java.

Adım 10: Adıyla bir sınıf oluşturun Kullanıcı Kaydı paketin içinde com.javatpoint.model ve aşağıdakileri yapın:

  • Üç değişken tanımlayın kimlik, isim, Ve e-posta .
  • Alıcılar ve Ayarlayıcılar oluşturun.
    Dosyaya sağ tıklayın -> Kaynak -> Alıcılar ve Ayarlayıcılar Oluştur
  • Varsayılan bir kurucu tanımlayın.
  • Sınıfı şu şekilde işaretle: Varlık ek açıklamayı kullanarak @Varlık.
  • İşaret İD ek açıklamayı kullanarak birincil anahtar olarak @İD.

Kullanıcı Kaydı.java

 package com.javatpoint.model; import javax.persistence.Entity; import javax.persistence.Id; @Entity public class UserRecord { @Id private int id; private String name; private String email; //default conatructor public UserRecord() { } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } } 

Adım 11: Adıyla bir paket oluşturun com.javatpoint.controller klasörde src/ana/java.

Adım 1/2: Adıyla bir Denetleyici sınıfı oluşturun Kullanıcı Denetleyicisi paketin içinde com.javatpoint.controller ve aşağıdakileri yapın:

  • Ek açıklamayı kullanarak sınıfı denetleyici olarak işaretleyin @RestController.
  • Sınıfı otomatik olarak bağladım Kullanıcı Hizmeti ek açıklamayı kullanarak @Otomatik kablolu .
  • İki eşleme tanımladık, biri tüm kullanıcıları alma ve diğeri için Kullanıcı Ekle.

UserController.java

 package com.javatpoint.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import com.javatpoint.model.UserRecord; import com.javatpoint.service.UserService; import java.util.List; @RestController public class UserController { @Autowired private UserService userService; @RequestMapping('/') public List getAllUser() { return userService.getAllUsers(); } @RequestMapping(value='/add-user', method=RequestMethod.POST) public void addUser(@RequestBody UserRecord userRecord) { userService.addUser(userRecord); } } 

Adım 13: Adıyla bir paket oluşturun com.javatpoint.service klasörde src/ana/java.

Adım 14: Adıyla bir Hizmet sınıfı oluşturun Kullanıcı Hizmeti paketin içinde com.javatpoint.service ve aşağıdakileri yapın:

  • Ek açıklamayı kullanarak sınıfı hizmet olarak işaretleyin @Hizmet.
  • Otomatik olarak kablolandı Kullanıcı Havuzu
  • Bir yöntem tanımlayın getAllUsers() bir Liste döndürür
  • Başka bir yöntem adı tanımlayın Kullanıcı Ekle() Bu, kullanıcı kaydını kaydeder.

UserService.java

 package com.javatpoint.service; import java.util.List; import java.util.ArrayList; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.javatpoint.model.UserRecord; import com.javatpoint.repository.UserRepository; @Service public class UserService { @Autowired private UserRepository userRepository; public List getAllUsers() { ListuserRecords = new ArrayList(); userRepository.findAll().forEach(userRecords::add); return userRecords; } public void addUser(UserRecord userRecord) { userRepository.save(userRecord); } } 

Adım 15: Adıyla bir paket oluşturun com.javatpoint.repository klasörde src/ana/java.

Adım 16: Adıyla bir depo arayüzü oluşturun Kullanıcı Havuzu paketin içinde com.javatpoint.repository ve uzanır Crud Deposu .

maven'i yükle

Kullanıcı Deposu.java

 package com.javatpoint.repository; import org.springframework.data.repository.CrudRepository; import com.javatpoint.model.UserRecord; public interface UserRepository extends CrudRepository { } 

Adım 17: Şimdi aç ApacheDerbyExampleApplication.java dosya. Bir uygulamayı kurduğumuzda varsayılan olarak oluşturulur.

ApacheDerbyExampleApplication.java

 package com.javatpoint; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class ApacheDerbyExampleApplication { public static void main(String[] args) { SpringApplication.run(ApacheDerbyExampleApplication.class, args); } } 

Artık ihtiyaçlara göre gerekli tüm sınıfları ve paketleri kurduk. Herhangi bir şey sağlamadığımıza dikkat edin bağlantı URL'si veritabanı için. Yukarıdaki tüm adımları tamamladıktan sonra proje dizini aşağıdaki gibi görünecektir:

Bahar Önyükleme jpa

Uygulamayı çalıştıralım.

Adım 18:ApacheDerbyExampleApplication.java dosyasını oluşturun ve Java Uygulaması olarak çalıştırın.

Adım 19: Tarayıcıyı açın ve http://localhost:8080/ URL'sini çağırın. Listeye herhangi bir kullanıcı eklemediğimiz için boş bir liste döndürür.

Veritabanına bir kullanıcı eklemek için bir e-posta göndereceğiz. POSTALAMAK kullanarak talepte bulunun Postacı .

Adım 20:Postacı ve aşağıdakileri yapın:

  • Şunu seçin: POSTALAMAK
  • http://localhost:8080/add-user URL'sini çağırın.
  • Tıkla Vücut
  • İçerik Türünü şu şekilde seçin: JSON (uygulama/json).
  • Veritabanına eklemek istediğiniz verileri ekleyin. Aşağıdaki verileri ekledik:
 { 'id': '001', 'name': 'Tom', 'email': '[email protected]' } 
  • Tıkla Göndermek düğme.
Bahar Önyükleme jpa

Gönder butonuna tıkladığımızda, şunu gösterir: Durum:200 Tamam . Bu, isteğin başarıyla yürütüldüğü anlamına gelir.

Adım 21: Tarayıcıyı açın ve http://localhost:8080 URL'sini çağırın. Veritabanına eklediğimiz kullanıcıyı döndürür.

Bahar Önyükleme jpa
Apache derbi Örnek Projesini İndirin