Hibernacja - przegląd ORM
Co to jest JDBC?
JDBC oznacza Java Database Connectivity. Udostępnia zestaw Java API do uzyskiwania dostępu do relacyjnych baz danych z programu Java. Te interfejsy API języka Java umożliwiają programom w języku Java wykonywanie instrukcji SQL i interakcję z dowolną bazą danych zgodną z SQL.
JDBC zapewnia elastyczną architekturę do pisania niezależnej od bazy danych aplikacji, która może działać na różnych platformach i współpracować z różnymi DBMS bez żadnych modyfikacji.
Plusy i minusy JDBC
Plusy JDBC | Wady JDBC |
---|---|
Czyste i proste przetwarzanie SQL Dobra wydajność przy dużych ilościach danych Bardzo dobre do małych zastosowań Prosta składnia, tak łatwa do nauczenia |
Złożony, jeśli jest używany w dużych projektach Duże koszty programowania Brak hermetyzacji Trudna do wdrożenia koncepcja MVC Zapytanie jest specyficzne dla DBMS |
Dlaczego mapowanie relacyjne obiektów (ORM)?
Kiedy pracujemy z systemem zorientowanym obiektowo, istnieje niezgodność między modelem obiektowym a relacyjną bazą danych. RDBMS reprezentują dane w formacie tabelarycznym, podczas gdy języki zorientowane obiektowo, takie jak Java lub C #, przedstawiają je jako połączone ze sobą wykresy obiektów.
Rozważ następującą klasę Java z odpowiednimi konstruktorami i powiązaną funkcją publiczną -
public class Employee {
private int id;
private String first_name;
private String last_name;
private int salary;
public Employee() {}
public Employee(String fname, String lname, int salary) {
this.first_name = fname;
this.last_name = lname;
this.salary = salary;
}
public int getId() {
return id;
}
public String getFirstName() {
return first_name;
}
public String getLastName() {
return last_name;
}
public int getSalary() {
return salary;
}
}
Rozważ, że powyższe obiekty mają być przechowywane i wczytywane do następującej tabeli RDBMS -
create table EMPLOYEE (
id INT NOT NULL auto_increment,
first_name VARCHAR(20) default NULL,
last_name VARCHAR(20) default NULL,
salary INT default NULL,
PRIMARY KEY (id)
);
Pierwszy problem, co jeśli po opracowaniu kilku stron lub naszej aplikacji będziemy musieli zmodyfikować wygląd naszej bazy danych? Po drugie, ładowanie i przechowywanie obiektów w relacyjnej bazie danych naraża nas na pięć następujących problemów z niezgodnością -
Sr.No. | Niedopasowanie i opis |
---|---|
1 | Granularity Czasami będziesz mieć model obiektowy, który ma więcej klas niż liczba odpowiadających im tabel w bazie danych. |
2 | Inheritance RDBMS nie definiują niczego podobnego do dziedziczenia, które jest naturalnym paradygmatem w obiektowych językach programowania. |
3 | Identity RDBMS definiuje dokładnie jedno pojęcie „identyczności”: klucz podstawowy. Jednak Java definiuje zarówno tożsamość obiektu (a == b), jak i równość obiektów (a.equals (b)). |
4 | Associations Języki zorientowane obiektowo reprezentują asocjacje przy użyciu odniesień do obiektów, podczas gdy RDBMS reprezentuje asocjację jako kolumnę klucza obcego. |
5 | Navigation Sposoby uzyskiwania dostępu do obiektów w Javie i RDBMS są zasadniczo różne. |
Plik Oprzedmiot-Rpodniosły Mapping (ORM) jest rozwiązaniem obsługującym wszystkie powyższe niedopasowania impedancji.
Co to jest ORM?
ORM oznacza Oprzedmiot-Rpodniosły Mapping (ORM) to technika programowania służąca do konwersji danych między relacyjnymi bazami danych a obiektowymi językami programowania, takimi jak Java, C # itp.
System ORM ma następujące zalety w porównaniu ze zwykłym JDBC -
Sr.No. | Zalety |
---|---|
1 | Niech kod biznesowy uzyskuje dostęp do obiektów zamiast tabel bazy danych. |
2 | Ukrywa szczegóły zapytań SQL z logiki OO. |
3 | Na podstawie JDBC „pod maską”. |
4 | Nie ma potrzeby zajmowania się implementacją bazy danych. |
5 | Jednostki oparte na koncepcjach biznesowych, a nie na strukturze bazy danych. |
6 | Zarządzanie transakcjami i automatyczne generowanie kluczy. |
7 | Szybki rozwój aplikacji. |
Rozwiązanie ORM składa się z następujących czterech podmiotów -
Sr.No. | Rozwiązania |
---|---|
1 | API do wykonywania podstawowych operacji CRUD na obiektach trwałych klas. |
2 | Język lub interfejs API do określania zapytań odnoszących się do klas i właściwości klas. |
3 | Konfigurowalne narzędzie do określania metadanych mapowania. |
4 | Technika interakcji z obiektami transakcyjnymi w celu wykonywania brudnego sprawdzania, leniwego pobierania skojarzeń i innych funkcji optymalizacyjnych. |
Struktury ORM Java
W Javie istnieje kilka trwałych struktur i opcji ORM. Trwała struktura to usługa ORM, która przechowuje i pobiera obiekty do relacyjnej bazy danych.
- Enterprise JavaBeans Entity Beans
- Java Data Objects
- Castor
- TopLink
- Wiosna DAO
- Hibernate
- I wiele więcej