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