Hibernate Flashcards
Zalety ORM
- Abstrakcja bazy danych: Praca na poziomie obiektów zamiast SQL.
- Niezależność od bazy danych: Ułatwia zmianę systemu baz danych.
- Zwiększona produktywność: Skupienie na logice biznesowej, mniej ręcznego kodu SQL.
- Wsparcie dla skomplikowanych operacji: Dziedziczenie, kompozycja, wielowątkowość.
- Bezpieczeństwo: Ochrona przed atakami typu SQL Injection.
- Optymalizacja wydajności: Pamięć podręczna, leniwe ładowanie, wsparcie dla transakcji.
- Zarządzanie relacjami: Naturalne zarządzanie relacjami obiektów.
- Spójność: Jednolita reprezentacja danych.
Czym jest ORM
ORM, czyli Object-Relational Mapping , to technika programowania, która umożliwia konwersję danych pomiędzy systemami relacyjnymi baz danych a obiektowo zorientowanymi językami programowania.
Czym jest sesja w Hibernate?
- Sesja w Hibernate reprezentuje pojedynczą jednostkę pracy z bazą danych.
- Sesja umożliwia operacje CRUD (tworzenie, odczytzarządzanie transakcjami
- dowolna ilość sesji w aplikacji
- ywanie, aktualizację, usuwanie) na obiektach
- zarządzanie transakcjami
- zapewnia kontekst dla persystencji obiektów.
Czym jest SessionFactory w Hibernate?
- specjalny obiekt, który jest punktem wyjścia do tworzenia aplikacji z hibernate
- odpowiedzialna za tworzenie obiektów Session
- odpowiedzialna za utrzymanie połączenia z bazą danych oraz konfiguracje
- jjedna Session Factory dla każdej bazy danych
- ma cache drugiego poziomu
Najwżniejsze interfejsy w Hibernate
Configuration
SessionFactory
Session
Criteria
Query
Transaction
Czym jest Lazy Loading w kontekście Hibernate?
- Lazy Loading to technika ładowania danych w momencie, gdy są one rzeczywiście potrzebne
- ## obiekty powiązane z głównym obiektem (np. kolekcje) nie są ładowane od razu razem z głównym obiektem, ale dopiero wtedy, gdy próbuje uzyskać do nich dostęp.
Czym jest cache ?
- mechanizmu, który umożliwia przechowywanie obiektów w pamięci między sesjami (transakcjami),
- pozwala na zmniejszenie liczby kosztownych zapytań do bazy danych
Cache piewszego poziomu vs Cache drugiego poziomu
czym jest Hibernate Configuration File
- hibernate.cfg.xml, to podstawowy plik XML używany do konfigurowania Hibernate.
- określenie szczegółów dotyczących połączenia z bazą danych, właściwości dialektu bazy danych oraz innych globalnych ustawień
- umożliwia określenie mapowanych klas lub plików mapowania, które definiują, jak obiekty Java powinny być przechowywane w bazie danych.
Podstawowe elementy hibernate.cfg.xml
- dotyczące sterownika JDBC,
- adresu URL bazy danych,
- nazwy użytkownika, hasła itp.
- wybór dialektu SQL,
- konfiguracja cache 2 poziomu
- format logowania zapytań SQL.
- które klasy są mapowane do tabel w bazie danych.
jak stworzyc klase immutable w hibernate przy pomocy XML?
markingmutable=false
CZYM JEST Hibernate Inheritance Mapping?
- technika mapowania hierarchii dziedziczenia w klasach do struktur table w bazie danych
Jakie są trzy główne strategie mapowania dziedziczenia w Hibernate?
- Table Per Class Hierarchy (Jedna tabela dla całej hierarchii).
- Table Per Concrete Class (Jedna tabela dla każdej konkretnej klasy).
- Table Per Subclass (Jedna tabela dla każdej podklasy).
Opisz strategię “SingleTable Strategy”.
- Wszystkie klasy w hierarchii dziedziczenia są mapowane na** jedną tabelę. **
- Wprowadzenie kolumny dyskryminatora, która określa typ konkretnej instancji.
- Kolumny, które nie są wspólne dla wszystkich podklas, mogą mieć wartość NULL.
Opisz strategię “Table Per Concrete Class”.
- Dla każdej konkretnej klasy w hierarchii dziedziczenia tworzona jest osobna tabela.
- Nie ma potrzeby kolumny dyskryminatora.
- Może to prowadzić do powielenia kolumn w wielu tabelach i konieczności wielokrotnego odwzorowania wspólnych atrybutów w każdej tabeli.
Opisz strategię “Table Per Subclass”.
- Dla każdej klasy w hierarchii dziedziczenia tworzona jest osobna tabela, ale jedynie z atrybutami, które są unikalne dla tej klasy.
- Tablice są połączone za pomocą klucza głównego.
- Eliminuje problem wartości NULL oraz problem dublowania kolumn.
@Entity
Oznacza klasę jako encję, co sprawia, że jest mapowana do tabeli w bazie danych.
Klasy oznaczone tą adnotacją mogą być używane w operacjach CRUD za pomocą sesji Hibernate.
@Table
Umożliwia określenie nazwy tabeli i innych opcji tabeli dla mapowanej encji. Jeśli nie jest używana, nazwa klasy zostanie użyta jako nazwa tabeli.
@JoinTable
Określa tabelę łączącą w relacji wiele-do-wielu. Można w niej określić nazwę tabeli, kolumny łączące itp.
@JoinColumn
Określa nazwę kolumny, której używa się do łączenia w relacjach.
@Transient
Oznacza, że dane pole nie powinno być utrwalane ani mapowane do bazy danych.
@GeneratedValue
Określa strategię generowania wartości dla klucza głównego.
Strategia Squence
Strategia SEQUENCE używa sekwencji bazy danych do generowania kluczy głównych.
Wymaga określenia nazwy sekwencji. Jest to popularne podejście w bazach danych takich jak Oracle.
@Id **@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "my_seq_gen") @SequenceGenerator(name = "my_seq_gen", sequenceName = "MY_SEQ")** private Long id;
Strategia Identity
Strategia IDENTITY polega na pozostawieniu generowania klucza głównego bazie danych, która używa kolumny autoinkrementacyjnej.
Jest to popularne w bazach danych takich jak MySQL czy MS SQL Server.