Sobes.tech
Junior

Java'da sinfni ma'lumotlar bazasi bilan qanday bog'lash mumkin?

sobes.tech AI

AIdan javob

Java'da sinf va ma'lumotlar bazasi o'rtasidagi bog'lanish odatda ob'ekt-relyatsion xaritalash (ORM) yoki JDBC yordamida amalga oshiriladi.

JDBC (Java Database Connectivity)

JDBC — bu relatsion ma'lumotlar bazalariga kirish uchun standart usulni ta'minlaydigan API. U Java-koddan SQL so'rovlarini bajarishga imkon beradi.

Qadamlar:

  1. Ma'lumotlar bazasi drayverini yuklash.
  2. Aloqani o'rnatish (Connection).
  3. Statement yoki PreparedStatement ob'ektini yaratish.
  4. SQL so'rovini bajarish.
  5. Natijalarni qayta ishlash (ResultSet).
  6. Resurslarni yopish (Connection, Statement, ResultSet).

Ma'lumotlarni olish misoli:

// "users" jadvalidan ma'lumot olish misoli
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;

try {
    // Drayverni yuklash (ma'lumotlar bazasiga bog'liq)
    Class.forName("org.postgresql.Driver"); // PostgreSQL uchun misol

    // Aloqani o'rnatish
    connection = DriverManager.getConnection("jdbc:postgresql://localhost:5432/mydatabase", "user", "password");

    // Statement yaratish
    statement = connection.createStatement();

    // So'rov bajarish
    resultSet = statement.executeQuery("SELECT id, name, email FROM users");

    // Natijalarni qayta ishlash
    while (resultSet.next()) {
        int id = resultSet.getInt("id");
        String name = resultSet.getString("name");
        String email = resultSet.getString("email");
        System.out.println("User ID: " + id + ", Name: " + name + ", Email: " + email);
    }
} catch (SQLException | ClassNotFoundException e) {
    e.printStackTrace();
} finally {
    // Resurslarni yopish
    try {
        if (resultSet != null) resultSet.close();
        if (statement != null) statement.close();
        if (connection != null) connection.close();
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

ORM (Ob'ekt-relyatsion xaritalash)

Hibernate, JPA asosida Hibernate kabi ORM freymvorklari Java ob'ektlarini ma'lumotlar bazasi jadvallariga va aksincha xaritalash jarayonini avtomatlashtiradi. Ular SQL bilan ishlashni abstraktsiya qilgan holda Java ob'ektlari bilan ishlash imkonini beradi.

Asosiy tushunchalar:

  • Entity: Maxsus annotatsiyalar bilan belgilangan oddiy POJO sinfi, bazadagi jadvalga mos keladi.
  • Annotations: Sinf va jadval, maydonlar va ustunlar, entitilar o'rtasidagi bog'lanishlarni tavsiflash uchun ishlatiladi (birga, ko'pga va hokazo).
  • EntityManager (JPA) / Session (Hibernate): Entitilar bilan operatsiyalarni bajarish uchun interfeyslar (saqlash, yangilash, o'chirish, qidirish).

Entitet misoli:

// User entiteti misoli
import javax.persistence.*;

@Entity // Bu entitet ekanligini ko'rsatadi
@Table(name = "users") // Mos keladigan jadval nomini ko'rsatadi
public class User {

    @Id // Asosiy kalitni ko'rsatadi
    @GeneratedValue(strategy = GenerationType.IDENTITY) // ID generatsiya strategiyasi
    private Long id;

    @Column(name = "name") // Mos keladigan ustun nomini ko'rsatadi
    private String name;

    @Column(name = "email", unique = true)
    private String email;

    // Getterlar, setterlar, konstruktorlar
    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 String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

JPA yordamida entitetingizni saqlash misoli:

// User entitetini saqlash misoli
import javax.persistence.*;

EntityManagerFactory emf = Persistence.createEntityManagerFactory("my_persistence_unit"); // persistence.xml faylidagi my_persistence_unit
EntityManager em = emf.createEntityManager();
EntityTransaction transaction = em.getTransaction();

try {
    transaction.begin();

    User newUser = new User();
    newUser.setName("John Doe");
    newUser.setEmail("john.doe@example.com");

    em.persist(newUser); // Entitetingizni saqlash

    transaction.commit();
} catch (Exception e) {
    if (transaction != null && transaction.isActive()) {
        transaction.rollback();
    }
    e.printStackTrace();
} finally {
    em.close();
    emf.close();
}

JDBC va ORM o'rtasidagi tanlov:

Xususiyatlar JDBC ORM (JPA/Hibernate)
Murakkablik Past abstraktsiya darajasi, ko'proq kod. Yuqori abstraktsiya darajasi, kamroq kod.
Moslashuvchanlik SQL ustidan to'liq nazorat. SQL bilan to'g'ridan-to'g'ri ishlashda cheklovlar.
Ishlash tezligi Potensial yuqori, qo'lda optimallashtirish bilan. ORM ortiqcha yuklar sababli pastroq bo'lishi mumkin.
Dasturlash vaqti Ko'proq vaqt, qo'lda ma'lumotlarni qayta ishlash. Kamroq vaqt, ko'plab vazifalar avtomatlashtirilgan.
Bog'lanishlarni qo'llab-quvvatlash Qo'lda amalga oshiriladi. Avtomatlashtirilgan (birga, ko'pga).

Hozirgi Java ilovalarida ORM freymvorklari ma'lumotlar bazasi bilan ishlashda keng qo'llaniladi, chunki ular rivojlanish va qo'llab-quvvatlashda samaraliroq. JDBC esa SQL ustidan to'liq nazorat talab qilinadigan holatlarda yoki ORM mos kelmaydigan maxsus optimizatsiyalar uchun ishlatiladi.