Warsztat Java #16 - ORM i Hibernate
What you'll learn
- umiejętności pozwolą uczestnikom na efektywne zarządzanie bazami danych w aplikacjach Java, zwiększając ich kompetencje oraz wartość na rynku pracy
- Zrozumienie koncepcji ORM (Object-Relational Mapping) oraz jego zastosowania w projektach Java.
- Rozpoznanie zalet i wad stosowania ORM w porównaniu do tradycyjnego podejścia JDBC.
- Poznanie podstaw JPA, w tym kluczowych adnotacji, cyklu życia encji oraz obsługi wyjątków.
- Umiejętność konfiguracji JPA w projekcie Java.
- Zrozumienie schematów, indeksów i widoków bazodanowych oraz ich zastosowania w optymalizacji pracy z danymi.
- Konfiguracja i podstawowe funkcje Hibernate w projektach Java.
- Praca z encjami, zarządzanie ich cyklem życia oraz zrozumienie strategii zarządzania bazami danych.
- Zarządzanie transakcjami za pomocą Hibernate.
- Wykonywanie podstawowych operacji CRUD (Create, Read, Update, Delete) z użyciem interfejsu Session.
- Implementacja relacji one-to-one, one-to-many i many-to-many.
- Zastosowanie typów pobierania danych (FetchType), kaskadowych operacji oraz usuwania osieroconych encji (Orphan Removal).
- Pisanie i wykonywanie zapytań HQL i JPQL, w tym operacji INSERT, UPDATE, DELETE i SELECT.
- Rozwiązywanie problemu n + 1 zapytań oraz korzystanie z natywnych zapytań (Native Query).
- Korzystanie z Connection Pool (HikariCP) oraz zarządzanie cache Hibernate (1LC i 2LC).
- Zrozumienie technik blokowania bazy danych (Database locking) i ich zastosowanie w praktyce.
Requirements
- Podstawową znajomość języka Java.
- Podstawową wiedzę na temat SQL.
- Znajomość podstawowych koncepcji programowania obiektowego.
- Podstawowe doświadczenie z JDBC.
- Podstawową znajomość Maven lub Gradle.
Description
23 godzinny kurs poświęcony ORM i Hibernate! W kursie dowiesz się, czym jest ORM i jak efektywnie wykorzystać framework Hibernate w swoim projekcie. Kurs ten oferuje obszerną dawkę wiedzy na temat pracy z bazami danych, od podstaw po zaawansowane zagadnienia.
Tematyka Warsztatu
ORM (Object-Relational Mapping)
Czym jest ORM: Zasady działania i zastosowanie ORM w projektach.
Zalety i wady stosowania ORM: Kiedy i dlaczego warto korzystać z ORM, a kiedy lepiej unikać.
ORM vs JDBC: Porównanie podejścia ORM z tradycyjnym JDBC.
JPA (Java Persistence API)
Czym jest JPA: Definicja i znaczenie JPA w kontekście ORM.
Z czego składa się JPA: Elementy składowe JPA i ich rola.
Adnotacje JPA: Wprowadzenie do kluczowych adnotacji JPA.
Cykl życia encji: Przebieg życia encji w JPA.
Wyjątki JPA: Najczęstsze wyjątki i jak sobie z nimi radzić.
Organizacja danych w bazie danych
Schematy bazodanowe: Czym są i jak je organizować.
Indeksy bazodanowe: Zastosowanie i korzyści z indeksowania.
Widoki bazodanowe: Definicja i zastosowanie widoków.
Hibernate - Intro
Co nam daje stosowanie Hibernate w projekcie?: Zalet i możliwości Hibernate.
Składniki Hibernate: Główne komponenty Hibernate.
Konfiguracja: Jak skonfigurować Hibernate w projekcie.
Cykl życia encji w Hibernate: Zrozumienie procesu życia encji.
Strategie zarządzania bazami danych: Różne podejścia i strategie.
Hibernate - Transakcje i CRUD
Transakcje w Hibernate: Zarządzanie transakcjami.
Interfejs Session i prosty przykład CRUD: Praktyczne przykłady operacji CRUD.
Notatki: Podsumowanie omawianych zagadnień.
Hibernate - Relacje
Relacja one-to-one: Definicja i przykład.
Relacja one-to-many: Definicja i przykład.
Relacja many-to-many: Definicja i przykład.
FetchType: Typy pobierania danych.
Kaskady: Kaskadowe operacje na relacjach.
Orphan Removal: Usuwanie osieroconych encji.
Hibernate - JPQL oraz HQL
Czym jest JPQL: Definicja i zastosowanie.
Czym jest HQL: Definicja i zastosowanie.
HQL - INSERT, UPDATE, DELETE, SELECT: Praktyczne przykłady.
HQL - Named Query: Użycie zapytań nazwanych.
FetchMode: Tryby pobierania danych.
Problem n + 1 zapytań: Rozwiązywanie problemów.
Encje vs metody equals() i hashCode(): Implementacja metod.
Native Query: Użycie natywnych zapytań.
Hibernate - Criteria API
Czym jest Criteria API: Definicja i zastosowanie.
Pobranie pojedynczego rekordu: Praktyczny przykład.
Distinct, Sortowanie, JOIN, Funkcje agregujące: Praktyczne przykłady.
Criteria UPDATE, DELETE: Praktyczne przykłady.
Hibernate - Zaawansowane zagadnienia
Connection Pool - HikariCP: Konfiguracja i zastosowanie.
Hibernate i cache - 1LC oraz 2LC: Zarządzanie pamięcią podręczną.
Database locking: Techniki blokowania bazy danych.
Test i Projekt
Test: Zadania sprawdzające zdobytą wiedzę.
Projekt: Praktyczne zastosowanie zdobytej wiedzy w projekcie.
Ten warsztat został nagrany w Java 17. Testy w tym warsztacie również odnoszą się do Java 17. Wiesz już na tym etapie o nowszych mechanizmach wprowadzanych w Java, ale my tutaj będziemy skupiać się na Hibernate, a nie na nowościach w Javie. Nic nie stoi na przeszkodzie, żebyś wykorzystywał/-a wiedzę pozyskaną po warsztacie o nowszych wersjach Java, ale nam zależy na pokazaniu mechanizmów samego Hibernate, dlatego będziemy starać się stosować proste konstrukcje, a nie mieszać tutaj np. sealed classes.
Jeżeli natomiast chodzi o Hibernate, to struktura warsztatu została przygotowana w ten sposób, że bazowe mechanizmy Hibernate zostaną przedstawione na podstawie Hibernate w wersji 6. W ramach tego warsztatu pokażemy mechanizmy, które będą towarzyszyć w trakcie Twojej całej przygody z Hibernate.
Warsztat ten jest 16. warsztatem w ramach ścieżki Zajavka. Oczywiście możesz go realizować niezależnie od innych moich materiałów.
Dołącz do mojego warsztatu i zyskaj praktyczne umiejętności w zakresie ORM i Hibernate, które pomogą Ci efektywnie pracować z bazami danych w aplikacjach Java!
Who this course is for:
- Junior i Mid-Level Developerów Java
- Specjalistów od Baz Danych
- Studentów Informatyki i bootcampów programistycznych
Instructors
Zajavka to kompletny, profesjonalny i pasjonujący roczny kurs programowania. Zajavkę stworzyliśmy z myślą o tych, którzy pragną rozpocząć swoją intensywną przygodę z programowaniem i w ciągu 12 miesięcy osiągnąć poziom profesjonalnego programisty Javy. Zacznij naukę od bootcampu od podstaw i kontynuuj ją w warsztatach, które krok po kroku, intensywnie i w ciągu kilku miesięcy przygotują Cię do pełnienia roli profesjonalnego programisty Javy.
Jestem programistą Java z ponad 9 letnim doświadczeniem komercyjnym. Zajmuję się głównie technologiami Java i JVM oraz tworzeniem stron aplikacji webowych wykorzystujących technologie Java, Spring, Kafka. Mam również doświadczenie w tworzeniu aplikacji opartych o React. Stawiam przede wszystkim na ciągły rozwój osobisty, zdobywanie nowych umiejętności i podnoszenie jakości swojej pracy. W swojej karierze zawodowej spędziłem dużo czasu ucząc innych, prowadząc szkolenia i nagrywając materiały wideo w celach edukacyjnych.