Ի՞նչ է ORM-ը և ինչպես է այն օգտագործվում Java զարգացման մեջ։
sobes.tech AI
Պատասխան AI-ից
ORM (Օբյեկտ-Հարաբերական Մապինգ) - դա ծրագրավորման տեխնիկա է, որը օգտագործվում է տվյալների փոխակերպման համար անհամատեղելի տիպային համակարգերի միջև, որոնք կիրառվում են օբյեկտ-կողմնորոշված ծրագրավորման լեզուներում, և ռելացիոնալ տվյալների բազաներում: Իրականում, ORM-ը ստեղծում է «վիրտուալ» օբյեկտային տվյալների բազա, որը կարելի է օգտագործել կոդից:
Java-ում ORM-ը օգտագործվում է՝
- Java օբյեկտների համադրումը տվյալների բազայի աղյուսակների հետ: Յուրաքանչյուր դասի օբյեկտ համընկնում է տվյալների բազայի աղյուսակի գրանցման հետ, իսկ օբյեկտի դաշտերը՝ աղյուսակի սյունակների:
- Տվյալների աշխատանքի պարզեցում: Ծրագրավորողը չի պետք գրել SQL հարցումներ ձեռքով CRUD (Ստեղծել, Կարդալ, Թարմացնել, Ջնջել) գործողությունների համար: ORM-ֆրեյմվորկը գեներացնում է SQL-ը թաքնված կերպով:
- Արդյունավետության բարձրացում: ORM-ֆրեյմվորկները հաճախ ունենում են կեշավորման մեխանիզմներ, որոնք կարող են արագացնել տվյալների բազայի հետ գործողությունները:
- Տեղափոխելիության բարելավում: Օգտագործելով ORM-ֆրեյմվորկը, հավելվածը դառնում է ավելի քիչ կախված կոնկրետ տվյալների բազայից, քանի որ ֆրեյմվորկը կարող է հարմարեցնել SQL հարցումները տարբեր դիալեկտների:
- Թեստավորման պարզեցում: ORM-ը թույլ է տալիս կատարել մոդուլային թեստավորում բիզնես-լոգիկայի՝ առանց իրական տվյալների բազայի միացման, օրինակ՝ օգտագործելով H2 կամ HSQLDB in-memory ռեժիմում:
Հայտնի ORM-ֆրեյմվորկների օրինակներ Java-ում՝
- Hibernate
- JPA (Java Persistence API) - դա ստանդարտ է, որը իրականացնում են Hibernate, EclipseLink և այլք:
- MyBatis
Java-ում ORM-ի օգտագործումը սովորաբար ներառում է՝
- Նշել ենթակառուցվածքները (Entities): Java դասերի ստեղծում, որոնք նշված են՝ համադրելու համար տվյալների բազայի աղյուսակների հետ, օրինակ՝ օգտագործելով JPA նշումներ (
@Entity,@Table,@Id,@Column): - Կոնֆիգուրացիայի կարգավորում: ORM-ֆրեյմվորկի կոնֆիգուրացիա՝ տվյալների բազային կապի և վարքագծի պարամետրերի համար:
- Գործողությունների իրականացում: API-ի օգտագործում ORM-ֆրեյմվորկի՝ CRUD գործողությունների համար ենթակառուցվածքների վրա:
Նմուշ՝ պարզ ենթակառուցվածքի դաս՝ օգտագործելով 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 // Հայտարարում է դասը որպես JPA ենթակառուցվածք
@Table(name = "products") // Համապատասխանում է դասին՝ աղյուսակին "products"
public class Product {
@Id // Հաստատում է դաշտը որպես հիմնական բանալի
@GeneratedValue(strategy = GenerationType.IDENTITY) // Ավտոմատ ID սերնդում
private Long id;
@Column(name = "name", nullable = false) // Համապատասխանում է "name" սյունակին, չի կարող լինել null
private String name;
@Column(name = "price")
private Double price;
// Գеттерներ և սեթերներ (կարճեցված)
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-ի միջոցով (EntityManager-ի միջոցով)
// Օրինակ՝ ծառայության շերտում
// Կարծում ենք, entityManager-ը ներդրված է կամ ստացվում այլ կերպ
// Նոր ապրանքի ստեղծում
Product newProduct = new Product();
newProduct.setName("Laptop");
newProduct.setPrice(1200.00);
// Լիցենզիայի մեկնարկ
entityManager.getTransaction().begin();
// Ապրանքի պահպանում տվյալների բազայում
entityManager.persist(newProduct);
// Լիցենզիայի ավարտում
entityManager.getTransaction().commit();
Այսպիսով, ORM-ը զգալիորեն պարզեցնում է Java հավելվածի փոխազդեցությունը ռելացիոնալ տվյալների բազայի հետ, թույլ տալով ծրագրավորողին աշխատել տվյալների հետ օբյեկտ-կողմնորոշված ոճով։