Junior
Kas ir ORM un kā tas tiek izmantots Java izstrādē?
sobes.tech AI
Atbilde no AI
Objektu-reliāciju kartēšana (ORM) ir programmēšanas tehnika, kas nodrošina datu pārveidi starp nesaderīgām tipu sistēmām, kas tiek izmantotas objektorientētās programmēšanas valodās, un relāciju datu bāzēm. Pamatā ORM izveido "viltus" objektu datu bāzi, ko var izmantot no koda:
Java ORM tiek izmantots:
- Java objektu atbilstība datu bāzes tabulām: Katrs klases objekts atbilst ierakstam datu bāzes tabulā, bet objekta lauki – tabulas kolonnām.
- Datu darba vienkāršošana: Izstrādātājam nav jāraksta SQL vaicājumi manuāli CRUD (Izveidot, Lasīt, Atjaunināt, Dzēst) operācijām. ORM ietvars ģenerē SQL slēptā līmenī.
- Veiktspējas uzlabošana: ORM ietvari bieži ir ar kešatmiņas mehānismiem, kas var paātrināt datu bāzes operācijas.
- Pārvietojamības uzlabošana: Izmantojot ORM ietvaru, lietojumprogramma kļūst mazāk atkarīga no konkrētas datu bāzes, jo ietvars var pielāgot SQL vaicājumus dažādiem dialektiem.
- Testēšanas vienkāršošana: ORM ļauj veikt moduļu biznesa loģikas testēšanu bez nepieciešamības pieslēgties reālai datu bāzei, izmantojot, piemēram, H2 vai HSQLDB in-memory režīmā.
Populāru ORM ietvaru piemēri Java:
- Hibernate
- JPA (Java Persistence API) – specifikācija, ko realizē Hibernate, EclipseLink un citi.
- MyBatis
Java ORM lietošana parasti ietver:
- Subjektu (Entities) definēšana: Java klases, kas ir anotētas, lai atbilstu datu bāzes tabulām, piemēram, ar JPA anotācijām (
@Entity,@Table,@Id,@Column). - Konfigurācijas iestatīšana: ORM ietvara konfigurēšana datu bāzes savienošanai un darbības parametru noteikšanai.
- Operāciju veikšana: ORM API izmantošana, lai veiktu CRUD operācijas entitātos.
Piemērs vienkāršas entitātes klases ar JPA:
// 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 // Apzīmē klasi kā JPA entītiju
@Table(name = "products") // Saista klasi ar tabulu "products"
public class Product {
@Id // Nosaka lauku kā galveno atslēgu
@GeneratedValue(strategy = GenerationType.IDENTITY) // Automātiska ID ģenerēšana
private Long id;
@Column(name = "name", nullable = false) // Saista lauku ar kolonnu "name", nevar būt null
private String name;
@Column(name = "price")
private Double price;
// Gētteri un setteri (īsā versijā)
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;
}
}
Piemērs datu saglabāšanai ar JPA (caur EntityManager):
// Piemērs servisa slānī
// Pieņem, ka entityManager ir injicēts vai iegūts citādi
// Jauna produkta izveide
Product newProduct = new Product();
newProduct.setName("Laptop");
newProduct.setPrice(1200.00);
// Transakcijas sākums
entityManager.getTransaction().begin();
// Produkta saglabāšana datu bāzē
entityManager.persist(newProduct);
// Transakcijas noslēgums
entityManager.getTransaction().commit();
Tādējādi, ORM ievērojami vienkāršo Java lietojumprogrammas mijiedarbību ar relāciju datu bāzi, ļaujot izstrādātājam strādāt ar datiem objektu orientētā stilā.