Sobes.tech
Junior

ORM nədir və Java inkişafında necə istifadə olunur?

sobes.tech Süni İntellekt

AI-dan cavab

Obyekt-Əlaqə Xəritəsi (ORM) - müxtəlif tip sistemləri arasında məlumatların çevrilməsi üçün proqramlaşdırma texnikasıdır, obyekt yönümlü proqramlaşdırma dillərində istifadə olunan və əlaqəli verilənlər bazaları ilə işləyir. Əslində, ORM "virtual" obyekt bazası yaradır ki, koddan istifadə oluna bilər.

Java-da ORM aşağıdakı məqsədlər üçün istifadə olunur:

  • Java obyektlərinin verilənlər bazası cədvəlləri ilə xəritələnməsi: Hər bir sinif obyekti verilənlər bazası cədvəlində qeyd ilə, obyektin sahələri isə sütunlarla xəritələnir.
  • Məlumatlarla işləmənin sadələşdirilməsi: İnkişaf etdirici SQL sorğularını əl ilə yazmağa ehtiyac duymur, ORM çərçivəsi SQL-i arxa planda yaradır.
  • Performansın artırılması: ORM çərçivələri tez-tez yaddaşda saxlanma mexanizmlərinə malikdir, bu da verilənlər bazası əməliyyatlarını sürətləndirə bilər.
  • Daşıma qabiliyyətinin yaxşılaşdırılması: ORM istifadə edərək, tətbiq müəyyən verilənlər bazasına daha az asılı olur, çünki çərçivə SQL sorğularını müxtəlif dialektlərə uyğunlaşdıra bilər.
  • Testlərin sadələşdirilməsi: ORM, real verilənlər bazasına qoşulmadan biznes məntiqinin modul testlərini həyata keçirməyə imkan verir, məsələn, H2 və ya HSQLDB-in yaddaş rejimində.

Java-da məşhur ORM çərçivələrinə nümunələr:

  • Hibernate
  • JPA (Java Persistence API) - Hibernate, EclipseLink və digər tərəfindən həyata keçirilmiş spesifikasiya.
  • MyBatis

ORM istifadə Java-da adətən aşağıdakı mərhələləri əhatə edir:

  1. Varlıq (Entity) tərifi: Java siniflərinin yaradılması, JPA anotasyonları ilə cədvəllərə xəritələnməsi (@Entity, @Table, @Id, @Column).
  2. Konfiqurasiya: ORM çərçivəsinin verilənlər bazasına qoşulması və davranış parametrlərinin təyin edilməsi.
  3. Əməliyyatların yerinə yetirilməsi: ORM API-dən istifadə edərək, CRUD əməliyyatlarının həyata keçirilməsi.

JPA istifadə edilən sadə varlıq sinfi nümunəsi:

// src/main/java/com/example/domain/Product.java
package com.example.domain;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity // JPA varlığı kimi elan edir
@Table(name = "products") // "products" cədvəlinə xəritələyir
public class Product {

    @Id // Sahəni birincil açar kimi təyin edir
    @GeneratedValue(strategy = GenerationType.IDENTITY) // ID-nin avtomatik yaradılması
    private Long id;

    @Column(name = "name", nullable = false) // "name" sütununa xəritələyir, null ola bilməz
    private String name;

    @Column(name = "price")
    private Double price;

    // Getter və setterlər (qısa üçün, qeyd olunmayıb)

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Double getPrice() {
        return price;
    }

    public void setPrice(Double price) {
        this.price = price;
    }
}

JPA vasitəsilə obyektin yadda saxlanması nümunəsi (EntityManager vasitəsilə):

// Xidmət qatında nümunə kod
// entityManager-in injeksiya olunduğu və ya başqa yolla əldə olunduğu qəbul edilir

// Yeni məhsul yaradılması
Product newProduct = new Product();
newProduct.setName("Laptop");
newProduct.setPrice(1200.00);

// Əməliyyatın başlanması
entityManager.getTransaction().begin();

// Məhsulun bazaya saxlanması
entityManager.persist(newProduct);

// Əməliyyatın tamamlanması
entityManager.getTransaction().commit();

Beləliklə, ORM Java tətbiqinin əlaqəli verilənlər bazası ilə qarşılıqlı əlaqəsini əhəmiyyətli dərəcədə sadələşdirir və inkişaf etdiriciyə məlumatlarla obyekt yönümlü tərzdə işləməyə imkan verir.