Odwzorowania relacyjnoobiektowe Hibernate Tranzakcyjno i bezpieczestwo danych Projekt
Odwzorowania relacyjno-obiektowe Hibernate Tranzakcyjność i bezpieczeństwo danych Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Transakcja Odwzorowania relacyjno-obiektowe Session session = factory. open. Session(); try { session. get. Transaction(). set. Timeout(3); session. get. Transaction(). begin(); session. get. Transaction(). commit(); } catch (Runtime. Exception e) { session. get. Transaction(). rollback(); throw e; } finally {session. close(); } Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 2
@ Transactional Odwzorowania relacyjno-obiektowe @Transactional ( propagation=Propagation. REQUIRED, isolation=Isolation. SERIALIZABLE, timeout = 3, read. Only = false ) Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 3
Propagation • • • Odwzorowania relacyjno-obiektowe NEVER - bez transakcji lub rzuca wyjątkiem NOT_SUPPORTED - bez transakcji lub zawiesza aktualną SUPPORTS - wspiera bieżącą lub bez transakcji MANDATORY - wspiera bieżącą lub rzuca wyjątkiem REQUIRED - wspiera bieżącą lub tworzy nową REQUIRES_NEW - tworzy nową i zawiesza bieżącą Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 4
Izolacja Odwzorowania relacyjno-obiektowe • hibernate. connection. isolation = 4 • • 1—Read uncommitted isolation 2—Read committed isolation 4—Repeatable read isolation 8—Serializable isolation Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 5
Izolacja Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 6
Lock. Mode • • • Odwzorowania relacyjno-obiektowe Lock. Mode. NONE Lock. Mode. READ Lock. Mode. UPDGRADE_NOWAIT Lock. Mode. WRITE Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 7
Lock. Mode Odwzorowania relacyjno-obiektowe Session. load(entity. Class, id, Lock. Mode. UPGRADE_NOWAIT); Session. lock(Object, lock. Mode. READ); Query. set. Lock. Mode(lock. Mode. WRITE); Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 8
Odwzorowania relacyjno-obiektowe Lock. Mode Transaction tx = session. begin. Transaction(); Uzytkownik uzytkownik = (Uzytkownik) session. get(Uzytkownik. class, id, Lock. Mode. UPGRADE); uzytkownik. set. Imie(”Marek"); tx. commit(); Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 9
Tryby synchronizacji danych Odwzorowania relacyjno-obiektowe • Flush. Mode. AUTO (domyślny) - flush(), koniec transakcji, niektóre zapytania • Flush. Mode. COMMIT - flush(), koniec transakcji • Flush. Mode. NEVER - flush() Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 10
Optymistic. Lock Odwzorowania relacyjno-obiektowe • Oparty o dodatkowe pole z adnotacją version @Version int optlock; • Nieograniczony dostęp do czytania danych • Przy próbie zapisu obiektu sprawdzany numer wersji Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 11
- Slides: 11