Java Persistence API - zagadnienia zaawansowane

Kod: Java-EE-jpa-pro
Kategoria: Java EE
Forma: 50% wykłady / 50% warsztaty
Czas trwania: 2 dni
Grupa docelowa: developerzy
Logistyka: W siedzibie klienta lub w innym dowolnym miejscu.
Data i dokładny zakres do ustalenia podczas analizy przed-szkoleniowej.

Wydajność jest częstym problemem systemów opartych o ORM dlatego program szkolenia dobrano pod kątem optymalizacji wykorzystania JPA.

Szkolenie przedstawia typowe błędy programistyczne wpływające na drastyczny spadek wydajności, sposoby ich wykrywania oraz zapobiegania.

Materiał uzupełniono o specyficzne zagadnienia Hibernate, takie jak cache orz strategie mapowania encji.

Materiały wstępne

Przed szkoleniem możesz zapoznać się z próbką naszych materiałów: Mapowanie relacyjno-obiektowe prawdziwych obiektów.

Prezentacja: Mapowanie relacyjno-obiektowe prawdziwych obiektów

Wyróżniki szkolenia

Podczas zajęć możesz oczekiwać szczególnych akcentów położonych na poniższe aspekty:

  • Zwracamy szczególną uwagę na wydajność
  • Prezentujemy typowe jak i mniej typowe pułapki
  • Wskazujemy rozwiązania każdego z omawianych problemów
  • warsztaty w formie pracy nad projektem wymagającym usprawnień

Program Szkolenia

Program jest ramą w jakiej możemy się poruszać merytorycznie - program dla konkretnego szkolenia dedykowanego ustalamy z grupą na podstawie analizy przed-szkoleniowej.

  1. Modelowanie encji z wykorzystaniem technik Obiektowych
    1. Elementy Domain Driven Design
    2. Mapowanie powiązań, sterowania kierunkiem właściciela
    3. Mapowania dziedziczenia - klasy bazowe dla Agregatów
    4. Wprowadzania do modelu ValueObjects zapewniających immutability i zwiększających siłę wyrazu modelu (adnotacja Embeded)
    5. Enkapsulaja modelu
    6. Określanie wyraźnej granicy grafu obiektu - określanie jednostki zmiany
  2. Architektura dostępu do danych w aplikacjach warstwowych
    1. Abstrakcja źródeł danych
    2. Wzorce DAO i Repository
    3. Wpływ na testability
    4. Wpływ na przenośność i skalowalność systemu
    5. Base DAO/Repository
      1. Wspólne operacje na encjach
    6. Umieszczenie dostępu do danych w architekturze aplikacji
    7. Projekt architektury pod kątem testowalności
    8. Architektura CqRS
  3. Modelowanie encji
    1. Wykorzystanie typów zagnieżdżonych do mapowania Value Objects
    2. Modelowanie niezmienników
    3. Dobór struktur danych w powiązaniu One-to-Many
      1. Set
      2. Bag
      3. List
      4. Uniaknie zbędnych operacji odtwarzania i pobierania kolekcji
    4. Mapowanie kolekcji
      1. Tabele linkujące w powiązaniu One-to-Many
        1. Kiedy stosować - kompozycja a agregacja
      2. Strategie pobieranie w kontekście modelu biznesowego
    5. Optymalizacja operacji
      1. Pobieranie Proxy
      2. Dynamiczny Update
    6. Operacje kaskadowe a granica Agregatu
    7. Problem identyfikacje encji - dobór podejścia
      1. klucze główne
      2. klucze naturalne
      3. UUID
      4. referencja w pamięci
    8. Dziedziczenie
      1. Kiedy dziedziczenie nie ma sensu w modelu biznesowym
      2. Implementacje dziedziczenia - wady i zalety każdego z podejść
      3. Pojedyncza tabela
      4. Tabela per klasa
      5. Tabele dla super klas
      6. Alternatywa dla dziedziczenia
        1. Party Archetype
        2. Role Object Pattern
  4. Zdarzenia i callbacks
    1. Dobór techniki do problemu
    2. Typowe zastosowania
  5. Wydajność dostępu do danych
    1. Pułapki wydajności JPA
      1. „n+1 Select problem” - wykrywanie i zapobieganie
      2. Wykrywanie N+1SP
        1. Wykrywanie automatyczne przy pomocy AOP
      3. Sposoby naprawy N+1SP
        1. JOIN FETCH
        2. Batch size
    2. Pułapki Lazy Loadingu oraz zbyt chciwego pobierania danych
      1. Nadmierne pobieranie danych
      2. Racjonalne wykorzystanie Lazy Loadingu
    3. Optymalne mapowanie encji
      1. Nadmiarowość pobierania danych
      2. Problemy z leniwym ładowaniem pól
    4. Pobieranie konkretnych atrybutów
  6. Operacje typu batch
    1. Pułapki
      1. L1 Cache
      2. L2 Cache
      3. Wersjonowanie
  7. JPA czy native SQL – dobór odpowiedniego narzędzia do konkretnego problemu
    1. Podejście pragmatyczne: refaktoryzacja z JPA na SQL przy pomocy DAO i wstrzykiwania zależności
    2. Dostęp do danych w kontekście architektury Command-query Responsibility Segregation
      1. Dedykowany model do odczytu - pobieranie danych odpowiednich do prezentacji
      2. Uaktualnianie modelu do odczytu
    3. Wykorzystanie myBatis
  8. Hibernate cache – niezastąpione rozwiązanie.
    1. Idea działania i konfiguracja
    2. Cache pierwszego poziomu
      1. Wygaszania w przypadku operowania na dużych ilościach danych
    3. Cache drugiego poziomu
      1. Najlepsze praktyki
    4. Cache zapytań - pułapki
      1. Kiedy nie stosować
    5. Mapowanie encji zorientowanie na cacheowanie
  9. Entity Manager - tryb rozszerzony
    1. Naturalna granica jednostki pracy
    2. Transakcje aplikacyjne
    3. Model konwersacji
    4. Manualne opróżnianie kontekstu
  10. Testowanie
    1. Racjonalizacja architektury w kontekście piramidy testów
    2. Testowanie operacji na JPA
    3. Unikanie mockowania źródeł danych w testach jednostkowych
    4. Preferowanie testów end-to-end gdy pobieramy dane
    5. Zwiększanie pokrycia poprzez testy jednostkowe
  11. Transakcje w Java EE
    1. Anomalie przy współbieżnym dostępie do danych
    2. Poziomy separacji w celu unikania anomalii
    3. Deklaratywne (zarządzane przez kontener)
    4. Koncepcja transakcji sterowanych wyjątkami
    5. Zarządzane przez Bean
    6. Zarządzane przez klienta – praktyczne wykorzystanie w przypadku łączenia z operacjami nie tylko bazodanowymi
    7. Zagadnienie propagacji transakcji - Praktyczne przykłady na każdy z typów
    8. Transakcje rozproszone w środowisku JEE
      1. Konfiguracja
      2. Zasada działania „double commit”
    9. Wydajność transakcji
  12. Blokowanie
    1. Optymistyczne - dobór podejścia do scenariusza
      1. Wersjonowanie
      2. Read
      3. Write - ochrona agregatów (grafów encji)
    2. Pesymistyczne
    3. Pułapki i najlepsze praktyki
  13. Systemu klasy multi-tenant
    1. Podejścia do modelu danych
      1. Wspólne dane
      2. Dedykowane tabele
      3. Dedykowane Schemy
    2. Podejścia do logiki - przegląd


Pobierz program w formacie PDF

Trenerzy

Poznaj ekspertów, którzy mogą poprowadzić Twoje szkolenie.

Materiały związane ze szkoleniem

Idea renesansowej pracowni - Bottegi zakłada nieustanną pracę jej członków i dzielenie się jej wynikami.

Zapytaj o szkolenie

Imię i nazwisko:
Firma:
E-mail/Nr tel:
Temat:
Wiadomość:

Jeżeli preferujesz osobisty kontakt to zawsze możesz zadzwonić.

Iwona Sobótka

Koordynatorka szkoleń