Java-da sinifi verilənlər bazası ilə necə əlaqələndirmək olar?
sobes.tech Süni İntellekt
AI-dan cavab
Java-da sinif və verilənlər bazası arasında əlaqə adətən obyekt-əlaqə xəritələşdirmə (ORM) texnologiyaları və ya JDBC vasitəsilə həyata keçirilir.
JDBC (Java Database Connectivity)
JDBC, əlaqəli verilənlər bazalarına giriş üçün standart bir API təmin edir. Java kodundan SQL sorğularını icra etməyə imkan verir.
Addımlar:
- Verilənlər bazası sürücüsünü yükləmək.
- Bağlantı qurmaq (
Connection). Statementvə yaPreparedStatementobyektini yaratmaq.- SQL sorğusunu icra etmək.
- Nəticələri işləmək (
ResultSet). - Resursları bağlamaq (Connection, Statement, ResultSet).
Məlumatların alınması nümunəsi:
// "users" cədvəlindən məlumatların alınması nümunəsi
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
try {
// Sürücünü yükləmək (verilənlər bazasından asılıdır)
Class.forName("org.postgresql.Driver"); // PostgreSQL üçün nümunə
// Bağlantı qurmaq
connection = DriverManager.getConnection("jdbc:postgresql://localhost:5432/mydatabase", "user", "password");
// Statement yaratmaq
statement = connection.createStatement();
// Sorğunu icra etmək
resultSet = statement.executeQuery("SELECT id, name, email FROM users");
// Nəticələri işləmək
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 {
// Resursları bağlamaq
try {
if (resultSet != null) resultSet.close();
if (statement != null) statement.close();
if (connection != null) connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
ORM (Obyekt-Əlaqə Xəritələşdirmə)
Hibernate və JPA kimi ORM çərçivələri Java obyektlərinin verilənlər bazası cədvəllərinə və əksinə xəritələşdirilməsini avtomatlaşdırır. Onlar SQL ilə işləmədən Java obyektləri kimi məlumatlarla işləməyə imkan verir.
Əsas anlayışlar:
- Entity: Xüsusi annotasiyalarla işarələnmiş adi POJO sinfi, verilənlər bazasındakı cədvələ uyğundur.
- Annotasiyalar: Sinif və cədvəl, sahələr və sütunlar, entitilər arasındakı əlaqələri təsvir etmək üçün istifadə olunur (birə-bir, bir çox və s.).
- EntityManager (JPA) / Session (Hibernate): Entitilərlə əməliyyatları yerinə yetirmək üçün interfeyslər (yadda saxla, yenilə, sil, axtarış).
Entitet nümunəsi:
// User entitet nümunəsi
import javax.persistence.*;
@Entity // Bu, entitet olduğunu göstərir
@Table(name = "users") // Uyğun cədvəlin adını göstərir
public class User {
@Id // Əsas açar
@GeneratedValue(strategy = GenerationType.IDENTITY) // ID-nin yaradılma strategiyası
private Long id;
@Column(name = "name") // Uyğun sütun adı
private String name;
@Column(name = "email", unique = true)
private String email;
// Getter və setterlər, 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 ilə entiteti saxlama nümunəsi:
// User entitetini saxlama nümunəsi
import javax.persistence.*;
EntityManagerFactory emf = Persistence.createEntityManagerFactory("my_persistence_unit"); // persistence.xml-dən
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); // Entiteti saxlamaq
transaction.commit();
} catch (Exception e) {
if (transaction != null && transaction.isActive()) {
transaction.rollback();
}
e.printStackTrace();
} finally {
em.close();
emf.close();
}
JDBC və ORM arasındakı seçim:
| Xüsusiyyət | JDBC | ORM (JPA/Hibernate) |
|---|---|---|
| Çətinlik | Aşağı abstraksiya səviyyəsi, çox kod. | Yüksək abstraksiya səviyyəsi, az kod. |
| Esneklik | SQL üzərində tam nəzarət. | SQL ilə birbaşa işləməkdə məhdudiyyətlər. |
| Performans | Əl ilə optimallaşdırma ilə daha yüksək ola bilər. | ORM-overhead səbəbindən aşağı ola bilər. |
| İnkişaf vaxtı | Daha çox vaxt, əl ilə məlumat işləmə. | Daha az vaxt, çoxlu iş avtomatlaşdırılır. |
| Əlaqələrin idarə olunması | Əl ilə həyata keçirilir. | Avtomatlaşdırılmış (bir-bir, çox-bir). |
Müasir Java tətbiqlərində, ORM çərçivələri məlumat bazası ilə işləmək üçün geniş istifadə olunur, çünki inkişaf və dəstəkdə səmərəlidir. JDBC isə SQL üzərində tam nəzarət tələb olunan hallarda və ya ORM uyğun gəlmədikdə istifadə olunur, məsələn, çox spesifik optimizasiyalar üçün.