JPA Java Persistance API

Podobne dokumenty
Java Enterprise Edition spotkanie nr 6. przygotował Jacek Sroka. Java Persistence API

Mapowanie obiektowo-relacyjne z wykorzystaniem Hibernate

Metody dostępu do danych

Bazy danych tworzenie aplikacji bazodanowych ORM / JPA

ORM w Javie. Adam Michalik 2007

JAVA PERSISTENCE API. Wykorzystano fragmenty wykładów M. Piotrowskiego i M. Wójcika. Waldemar Korłub

Podejście obiektowe do relacyjnych baz danych Hibernate.

Relacje. 1. Modelowanie relacji. - siedem rodzajów relacji J2EE. - relacje jedno i wielokierunkowe, - relacje reprezentowane przez kolekcje.

Relacje. 1. Modelowanie relacji. - siedem rodzajów relacji J2EE. - relacje jedno i wielokierunkowe, - relacje reprezentowane przez kolekcje.

Karolina Rusin, Paweł Biczysko, Michał Olejnik. 11 maja 2009

Gdzie jest moja tabela?

Serwery aplikacji. mgr Radosław Matusik. Wydział Matematyki i Informatyki Uniwersytetu Łódzkiego radmat radmat@math.uni.lodz.

Wprowadzenie db4o - podstawy db4o - technikalia Przydatne wiadomości. Wprowadzenie. db4o. Norbert Potocki. 1 czerwca Norbert Potocki db4o

Programowanie w języku Java WYKŁAD

Agenda. Grzegorz Wilaszek, Wojciech Krzystek

Hibernate. Adrian Gawor, Adam Klekotka, Piotr Kubisz. Technologie Biznesu Elektronicznego. 12 maja 2009

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

Programowanie wielowarstwowe i komponentowe

Java Persistence API - zagadnienia zaawansowane

Paweł Rajba

Dostęp do baz danych w aplikacjach Java EE

Aplikacja webowa w Javie szybkie programowanie biznesowych aplikacji Spring Boot + Vaadin

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

Programowanie obiektowe

Podstawy frameworka Spring

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

Projektowanie obiektowe oprogramowania Wzorce architektury aplikacji (3) Wykład 11 Repository, Unit of Work Wiktor Zychla 2017

METODY PROGRAMOWANIA

NHibernate Hibernate dla platformy.net. Hibernate posiada także dużą społeczność, zatem nietrudno uzyskać jakieś wsparcie w przypadku problemów.

EJB 2.x oraz zmiany w standardzie dla EJB 3.0. Michał Stanek

Nowy powiew od Słońca: EJB 3.0. Copyright Piotr Kochański & Erudis,

Technologia Programowania 2016/2017 Wykªad 12

Zasady generowania kluczy głównych Język Java Persistence Podstawowa architektura wielowarstwowych aplikacji w oparciu o wzorce oprogramowania

Hibernate. Od Nowicjusza do Profesjonalisty. Dave Minter Jeff Linwood

JAVA PERSISTENCE API CZĘŚĆ 2 ASPEKTY ZAAWANSOWANE. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska

Projektowanie obiektowe oprogramowania Wzorce architektury aplikacji (3) Wykład 11 Repository, Unit of Work Wiktor Zychla 2016

NHibernate. Narzędzie mapowania obiektowo - relacyjnego

EJB 3.0 & JBoss Seam. 25 kwietnia 2007 Jacek Gerbszt 1

Projektowanie obiektowe oprogramowania Wykład 9 Wzorce architektury aplikacji (1) Wiktor Zychla 2014

Db4o obiektowa baza danych wersja.net

22 października Akademia Górniczo-Hutnicza, Automatyka i Robotyka. Porównanie LINQ i NHibernate. Mateusz Mazur Ale o co chodzi?

JDBC (Java Database Connectivity vit )

Projektowanie obiektowe oprogramowania Wykład 9 Wzorce architektury aplikacji (1) Wiktor Zychla 2013

Wzorce logiki dziedziny

Programowanie w języku Java. Bazy danych SQLite w Javie

Projektowanie obiektowe oprogramowania Wykład 9 Wzorce architektury aplikacji (1) Wiktor Zychla 2015

Enterprise JavaBeans 3.0

Tomasz Dobek.

Hibernate mapowanie baz danych

Aplikacje w środowisku Java

Języki i metody programowania Java. Wykład 2 (część 2)

Obiektowość BD Powtórka Czas odpowiedzi. Bazy Danych i Systemy informacyjne Wykład 14. Piotr Syga

Relacyjne bazy danych. Podstawy SQL

MAPOWANIE OBIEKTOWO-RELACYJNE (ORM) CZY TYLKO DOBRA IDEA?

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Java i bazy danych. 1. JDBC podstawy, transakcje. 2. Mapowanie relacyjno obiektowe. Hibernate, przykład.

Protokół JDBC współpraca z relacyjnymi bazami danych lab3

Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

Enterprise JavaBeans

Tworzenie komponentów logiki biznesowej i warstwy dostępu do danych w oparciu o EJB3.0/JPA lub EJB 3.1/JPA2

Zaawansowane aplikacje internetowe - laboratorium

Technologie dostępu do baz danych z aplikacji Javy:

Odwzorowanie obiektowo-relacyjne

Dziedziczenie i język EJB QL

1 Wprowadzenie do J2EE

Strumieniowe bazy danych. Piotr i Paweł

Zaawansowane Techniki Bazodanowe

Aplikacje bazodanowe. dr inż. Arkadiusz Mirakowski

Java EE: JSF + EJB + JPA

Projektowanie Aplikacji Rozproszonych Jarosław Kuchta. Wzorce projektowe warstwy danych

Programowanie obiektowe

Programowanie obiektowe

Typy metod: konstruktory, destruktory, selektory, zapytania, iteratory.

Metody dostępu do danych

Analiza porównawcza technologii odwzorowania obiektowo-relacyjnego dla aplikacji Java

w PL/SQL bloki nazwane to: funkcje, procedury, pakiety, wyzwalacze

1 LINQ. Zaawansowane programowanie internetowe Instrukcja nr 1

Kurs programowania. Wykład 9. Wojciech Macyna

SPRING FRAMEWORK. dr inż. Jakub Chłapioski

Enterprise JavaBeans. 1. Architektura EJB: komponenty encyjne, komponenty sesyjne, komponenty sterowane komunikatami. 2. Kontenery EJB JBoss.

akademia androida Składowanie danych część VI

JAVA I BAZY DANYCH. MATERIAŁY:

Java - wprowadzenie. Programowanie Obiektowe Mateusz Cicheński

Instrukcja tworzenia aplikacji EE na bazie aplikacji prezentowanej na zajęciach lab.4 z PIO umożliwiająca przez sieć dostęp wielu użytkownikom.

Podstawowe informacje o technologii Java Persistence API - przykład

Enkapsulacja, dziedziczenie, polimorfizm

Tuning SQL Server dla serwerów WWW

Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2.

Relacyjne bazy danych. Podstawy SQL

Realizacja ekstensji klasy. Paulina Strzelecka, Tomasz Roszkowski

Dokumentacja do API Javy.

Instrukcja laboratoryjna nr.4

Programowanie w języku Java WYKŁAD

Automatyczne generowanie kodu. 4Developers, 26 marca 2010

Bazy danych. Bazy danych. Zapytania SELECT. Dr inż. Paweł Kasprowski.

Język SQL, zajęcia nr 1

Oracle PL/SQL. Paweł Rajba.

Paweł Rajba

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.

Transkrypt:

JPA Java Persistance API

Java Persistence API (JPA) Specyfiacja ipisująca standardy mapiwania ibieitiwi-relacyjnegi (ORM ibject relatinal mapping) Przyiładiwe implementacje: Hibernate OpenJPA EclipseLini

Zalety iirzystania z ORM Miżliwiść wyiinywania iperacji na danych pichidzących z relacyjnej bazy danych tai jai na zwyiłych ibieitach Pristita użytiiwania Znaczne przyśpieszenie pricesu twirzenia apliiacji Eliminuje iinieczniść twirzenia iidu di nisiipiziimiwej ibsługi bazy danych Autimatycznie zarządza pulą piłączeń di bazy danych i cache ibieitów Teiretycznie nie musimy wiedzieć jaiiej bazy używamy i jaiie są jej specyfczne cechy

ORM - wady Nieumiejętnie używany sprawia że wyniiiwe zapytania SQL są siimpliiiwane i czasichłinne a apliiacja małi wydajna

Encje przyiład @Entity public class Employee { @Id @Column(name="EMP_ID") private long id; private String firstname; private String lastname; @Transient private BigDecimal salary; }...

Encje pidstawiwe adnitacje @Entty @Id i @GeneratedValue @Cilumn @Table @OrderBy

Encje typy atrybutów Typy priste int, ling, biilean... Typy serializiwane java.utl.string, java.lang.integer, java.math.bigdecimal, java.utl.date... inne typy serializiwalne zdefniiwane przez użytiiwniia Typy wyliczeniiwe Inne encje Kileicje encji Cillectin, Set, List, Map

Typy ibieitów Java / baza danych

Odwziriwanie relacji @One-ti-Many @Many-Ti-One @One-ti-ine @Many-ti-many

Właściwiści związiów (parametry adnitacji) cascade jaiie iperacje wyiinywać iasiadiwi na związiu (PERSIST, MERGE, REMOVE, REFRESH iraz ALL) fetch LAZY EAGER mappedby pi strinie inverse iireślenie, itóry atrybut striny iwning wsiazuje na dany ibieit. Związii są zawsze mapiwane pi strinie właściciela. iptinal czy referencja miże być nullem

Relacje - przyiład @Entity public class Employee { @Id @Column(name="EMP_ID") private long id;... @OneToMany(mappedBy="owner") private List<Phone> phones;... } @Entity public class Phone { @Id private long id;... @ManyToOne(fetch=FetchType.LAZY) @JoinColumn(name="OWNER_ID") private Employee owner;... }

Cyil życia encji

Cyil życia encji Niwa/przejściiwa (new/transient) w naszej apliiacji zistał utwirziny ibieit danej encji, acziilwiei nie zistał in jeszcze pidłącziny pid żaden ibieit typu EnttyManager. W tej sytuacji ibieit istnieje tylii u nas w apliiacji, i w przypadiu wyiinania danej transaicji, nie zistanie zapisany di niej. Zarządzany/trwały (managed/persisted) ibieit zistał pidłącziny di EM przy pimicy metidy persist. Obieit jest w tym mimencie zarządzany przez EM, i w przypadiu, gdy zistanie wywiłane wyiinanie iiniretnej transaicji, zistanie zachiwany w bazie danych. Didatiiwi, jeżeli zistaną wyiinane zmiany na danym ibieicie encji (przed wyiinaniem transaicji) ti zistaną ine wyiinane na ibieicie, itóry pitem zistanie zapisany di bazy danych. Oderwane (detached) jest ti specjalny stan encji, w itórym nie jest ina zarządzana już przez EnttyMenager a, lecz wciąż reprezentuje ibieit w bazie danych. Są ine zazwyczaj zwracane di warstwy, w itórej migą zistać piiazane di użytiiwniia iińciwegi. Zmiany na ibieicie w tym stanie migą być wyiinywane, acziilwiei nie zistaną ine zapisane di bazy danych (i ile nie zistaną piniwnie piłączine z EnttyMenager em). Usunięta (remived) ibieit jest usunięty z bazy danych. Pidibnie jai metida persist() musi być wyiinany, w czasie trwania transaicji.

Hibernate Najpipularniejszy ORM dla Javy Open siurce Wysiia wydajniść i sialiwalniść (cache i clustering) Wiele spisibów twirzenia zapytań HQL Natywny SQL Zapytania przez ibieity Javy: Criteria i Example

HQL Select Query query = session.createquery("from Student where name = :name "); query.setparameter("name", "Kowalski"); List list = query.list(); Update Query query = session.createquery("update Student set name = :name" + " where id = :id"); query.setparameter("name", "Kowalski"); query.setparameter("id", "34"); int result = query.executeupdate(); Delete Query query = session.createquery("delete Student where name = :name"); query.setparameter("name", "Kowalski"); int result = query.executeupdate();

Spring Data JPA jeszcze łatwiejszy distęp di danych import org.springframework.data.jpa.repository.jparepository; import org.springframework.data.jpa.repository.query; import org.springframework.data.repository.query.param; import org.springframework.stereotype.repository; import pl.lodz.uni.springdemo.domain.student; import pl.lodz.uni.springdemo.domain.gender; import java.util.list; @Repository public interface StudentRepository extends JpaRepository<Student, Long> { } Student findstudentbyname(string name); List<Student> findstudentsbygender(gender gender); @Query("SELECT s FROM Student s WHERE LOWER(s.name) = LOWER(:name)") Student retrievebyname(@param("name") String studentname);

Spring Data JPA jeszcze łatwiejszy distęp di danych package org.springframework.data.jpa.repository; import java.util.list; import org.springframework.data.domain.example; import org.springframework.data.domain.sort; import org.springframework.data.repository.norepositorybean; import org.springframework.data.repository.pagingandsortingrepository; import org.springframework.data.repository.query.querybyexampleexecutor; @NoRepositoryBean public interface JpaRepository<T, ID> extends PagingAndSortingRepository<T, ID>, QueryByExampleExecutor<T> { List<T> findall(); List<T> findall(sort var1); List<T> findallbyid(iterable<id> var1); <S extends T> List<S> saveall(iterable<s> var1); void flush(); <S extends T> S saveandflush(s var1); void deleteinbatch(iterable<t> var1); void deleteallinbatch(); T getone(id var1); <S extends T> List<S> findall(example<s> var1); } <S extends T> List<S> findall(example<s> var1, Sort var2);

Spring Data JPA jeszcze łatwiejszy distęp di danych

Spring Data JPA jeszcze łatwiejszy distęp di danych