Aplikacje Java z JPA
Aplikacje Java z JPA (Hibernate)
Kod szkolenia: JAVA-JPA
Szkolenie adresowane jest do programistów Java tworzących warstwę trwałości i integracji, którzy puszkują szybkich, sposobów na budowę niezawodnych aplikacji
Celem szkolenia jest nabycie umiejętności oprogramowania warstwy integracji i tworzenia warstwy trwałości w oparciu o standard JPA. Jak również zwrócenie uwagi na najczęstsze problemy i sposoby ich rozwiązywania.
4 dni, po 8 godzin. Łącznie 32 godzin(y) szkolenia.
Oczekiwane przygotowanie słuchaczy przed szkoleniem
Umiejętność programowania w języku Java. Podstawowa znajomość SQL.
Polecane szkolenia uzupełniające
Szkolenie poprzedzające - Programowanie w Java (JAVA-PRO).
W naszej ofercie znajdują się również szkolenia uzupełniające w zakresie JEE:
JAVA-WYD,
JAVA-EJB,
JAVA-JSF,
JAVA-WS,
JAVA-JEE.
A także szkolenia na wyższych poziomach: projektowanie (JAVA-WZO) i architektura (JAVA-ARCH)
- Podstawy JPA
- Czym jest ORM
- Idea mapowania obiektów na relacje
- ORM a DAO
- JPA jako standard ORM
- Tworzenie klas trwałych z JPA
- @Entity
- @Id
- @GeneratedValue
- Dostęp do wartości
- Przez pole
- Przez własność (get, set)
- @Access (od JPA2.0 - JEE6)
- Zarządzanie trwałością z JPA
- Konfiguracja JPA
- persistenace.xml
- orm.xml
- EntityManager
- PersistanceUnit
- Cykl życia encji
- New
- Managed
- Deatached
- Removed
- API zarządzania trwałością
- Integracja z JPA
- Poza kontenerem
- Persistance
- EntityManagerFactory
- W kontenerze
- @PersistanceUnit
- @PersistanceContext
- Extended EntityManager
- Relacje w JPA
- Obiekty zagnieżdżone
- @Embeddable
- @Embedded
- Relacje między obiektami
- @OneToOne
- @OneToMany
- @ManyToOne
- @ManyToMany
- Optymalizacje
- @JoinColumn
- Leniwa inicjalizacja (lazy loading)
- Konfiguracja FetchType.LAZY
- LazyInitializationException
- Problem n+1 zapytań
- Relacje dwukierunkowe
- Definiowanie
- Strona bierna - pułapki przy zmianach
- Kaskadowe zatwierdzanie zmian
- CascadeType
- ALL
- DEATACH
- MERGE
- PERSIST
- REFRESH
- REMOVE
- Atrybut orphanRemoval (od JPA 2.0 - JEE6)
- Kolekcje w relacjach typu wiele
- @OrderBy
- @OrderColumn (od JPA 2.0 - JEE6)
- @MapKey
- Dodatkowe relacje JPA 2
- Kolekcje elementów @ElementCollection
- Rozbudowane @Embeddable
- Rozbudowane użycie map
- @MapKeyColumn
- @MapKeyJoinColumn
- @MapKeyClass
- @MapKeyEnumerated
- @MapKeyTemporal
- Dziedziczenie w JPA
- @Inheritance
- Strategie dziedziczenia InheritanceType
- TABLE_PER_CLASS
- JOINED
- @PrimaryKeyJoinColumn
- SINGLE_TABLE
- @DiscriminatorColumn
- @DiscriminatorValue
- Konsekwencje wydajnościowe
- Wyłączenie dziedziczenia ze schematu
- @MappedSuperclass
- @AttributeOverride, @AttributeOverrides
- @AssociationOverride, @AssociationOverrides
- Obiektowy język zapytań JPQL
- Wykonywanie zapytań
- EntityManager
- Query
- TypedQuery<T> (od JPA 2.0 - JEE6)
- Zapytania zmiany danych
- Zapytania z wynikiem
- Ograniczanie wyników zapytania
- Zapytania parametryzowane
- Składnia JPQL
- Podstawowe klauzule zapytania
- Operatory
- Funkcje
- Wyrażenia czasu
- Bieżący czas
- CURRENT_DATE
- CURRENT_TIME
- CURRENT_TIMESTAMP
- Literały czasu (od JPA 2.0 - JEE6)
- Zapytania polimorficzne
- Zapytania zagnieżdżone
- Złączanie tabel
- Obiekty transferowe - SELECT new
- Sprawdzanie typu obiektu
- Sprawdzenie class
- TYPE (od JPA 2.0 - JEE6)
- Instrukcje warunkowe (od JPA 2.0 - JEE6)
- NULLIF
- COALESCE
- CASE
- Kolekcje w JPQL (od JPA 2.0 - JEE6)
- Kolekcje w operatorze IN
- Kolejność w kolekcji - INDEX
- Odwołania do map
- KEY
- VALUE
- ENTRY
- Zapytania nazwane
- Definiowanie
- @NamedQuery
- @NamedQueries
- @QueryHint
- Użycie
- Zalety
- Zapytania natywne
- Tworzenie zapytań natywnych
- Wyniki skalarne
- Nazwane zapytana natywne
- @NamedNativeQuery
- @NamedNativeQueries
- Mapowanie wyników skalarnych
- @SqlResultSetMappings
- @SqlResultSetMapping
- @ColumnResult
- @EntityResult
- @FieldResult
- Problemy
- Definiowanie schematu bazy danych
- Typy
- @Lob
- @Enumerated
- @Temporal
- @Transient
- @Version
- Kolumny
- @Basic
- @Column
- Automatyczne generowanie kluczy
- @GeneratedValue
- GenerationType
- AUTO
- IDENTITY
- SEQUENCE
- @SequenceGenerator
- TABLE
- @TableGenerator
- Klucze złożone
- Definiowanie kluczy złożonych
- @IdClass
- @Id
- @EmbeddedId
- @Embeddable
- @AttributeOverride
- @AttributeOverrides
- @MapsId (od JPA 2.0 - JEE6)
- Wyszukiwanie po kluczach złożonych
- Tabele
- @Table
- @UniqueConstraint
- @JoinTable
- @JoinColumn
- @JoinColumns
- @SecondaryTable, @SecondaryTables
- @PrimaryKeyJoinColumn
- @PrimaryKeyJoinColumns
- @CollectionTable (od JSF 2.0 - JEE6)
- Nasłuchiwanie zmian
- Metody Callback
- @PrePersist, @PostPersist
- @PreUpdate, @PostUpdate
- @PreRemove, @PostRemove
- @PostLoad
- Definiowanie kolejki słuchaczy
- W XML
- W kodzie
- @EntityListeners
- @ExcludeDefaultListeners
- @ExcludeSuperclassListeners
- Walidacja danych - Bean Validation (JEE6)
- Reguły w modelu
- Wbudowane reguły walidacji
- @AssertTrue, @AssertFalse
- @Min, @Max
- @DecimalMin, @DecimalMax
- @Digits
- @Size
- @Pattern
- @Null, @NotNull
- @Past, @Future
- Cross Field Validation - walidacja względna
- Grupy ograniczeń
- Grupa domyślna
- Własne grupy
- Hierarchia grup
- Sekwencje grup @GroupSequence
- Własna grupa domyślna dla klasy
- Walidacja w API
- Różne środowiska wykonania
- Użycie w JPA
- Użycie w JSF
- Użycie w kontenerze
- Użycie poza kontenerem
- Zakresy walidacji
- Klasa
- Atrybut
- Wartość dla atrybutu
- Grupa
- Wynik błędu
- Klasa ConstraintViolation
- Komunikaty błędów
- W ograniczeniach
- Internacjonalizacja komunikatów
- Nadpisanie komunikatów domyślnych
- Komunikaty a JSF
- Walidacja struktur obiektów
- Walidacja kolekcji i tablic
- Walidacja obiektów powiązanych (@Valid)
- Grupa domyślna a struktury obiektów
- Tworzenie własnych ograniczeń
- Podstawy tworzenia adnotacji
- Własne ograniczenia
- Własne adnotacje ograniczeń
- Własny walidator (ConstraintValidator)
- Ograniczenia wielokrotne
- Lista tych samych ograniczeń
- Ograniczenia zagregowane
- Ograniczenia na ograniczeniach
- @ReportAsSingleViolation
- @OverridesAtribute
- Zaawansowane API JPA 2
- Integracja z BeanValidation
- Walidacja a relacje JPA
- Obsługa błędów walidacji - ConstraintViolationException
- Zmiana domyślnych opcji walidacji
- W persistance.xlm
- Przez Persistence
- JPA a grupy walidacji
- Walidacja a cykl życia
- Wiązanie grup z cyklem życia
- Blokowanie pesymistyczne
- EntityManager (lock, find, refresh)
- LockModeType
- Query (setLockMode)
- Wskazówki zapytania - hints
- EntityManager (find, refresh)
- Query (setHint)
- Cache drugiego poziomu
- EntityManagerFactory.getCache
- Cache
- @Cacheable
- Konfiguracja w persistance.xml
- Criteria API
- CriteriaBuilder
- CriteriaQuery
- Root<T>
- ParameterExpression
- Join
- Subquery
- AbstractQuery
- Mocne typowanie (metamodel)
- Podstawy API metamodelu
- Odwołanie przez metamodel w zapytaniach
- Metamodel kanoniczny
- Po co?
- Generowanie
- Reguły nazewnictwa
- Metamodel kanoniczny w zapytaniach