Java Persistence API - zagadnienia zaawansowane

Tytuł: Java Persistence API - zagadnienia zaawansowane
Kod: jpa-pro
Kategoria: Zaawansowana Java
Forma: 50% wykłady / 50% warsztaty
Czas trwania: 2 dni
Odbiorcy: developerzy
Zapisy: Indywidualne zamówienie i dopasowanie dla grupy.
Logistyka: W siedzibie klienta lub w innym dowolnym miejscu.

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

Wyróżniki szkolenia

  • 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. Zaawansowanie mapowania
    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.

  • Co każdy programista Java powinien wiedzieć o JVM: Część I
    KATEGORIE: Java i JVM

    Artykuł jest pierwszym krokiem do wnętrza "czarnego pudełka" - JVM.

    Autor Bottega:

    Jakub Kubryński

    Powiązane usługi:

    Audyty architektury

  • Co każdy programista Java powinien wiedzieć o JVM: Część II
    KATEGORIE: Java i JVM

    Zarządzanie pamięcią.

    Autor Bottega:

    Jakub Kubryński

    Powiązane usługi:

    Audyty architektury

  • Wydajnośc JPA i Hibernate - Dlaczego u mnie działa tak wolno?
    KATEGORIE: Java i JVM

    Artykuł poświęcony problemom wydajności Hibernate. Materiały (pdf) z prezentacji wygłoszonej na konferencji NYAC 2010.

    Autor Bottega:

    Sławomir Sobótka

    Powiązane usługi:

    Audyty architektury

Zamów 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ń


Twoje dane osobowe przetwarzamy, aby udzielić odpowiedzi na Twoje pytanie. Administratorem Twoich danych osobowych jest Bottega It Minds Sławomir Sobótka. Przysługuje Ci prawo wniesienia sprzeciwu wobec przetwarzania, prawo dostępu do danych, prawo żądania ich sprostowania, usunięcia lub ograniczenia ich przetwarzania. Szczegółowe informacje dotyczące przetwarzania Twoich danych osobowych znajdują się TUTAJ.