Hibernate uzupełnienie

Slides:



Advertisements
Podobne prezentacje
Programowanie obiektowe
Advertisements

1 Dzisiejszy wykład Wzorce funkcji Wzorce klas. 2 Wzorce Często pojawia się konieczność pisania podobnych funkcji lub klas operujących na argumentach.
1 Dzisiejszy wykład Wzorce funkcji Wzorce klas Tablica asocjacyjna Składowe statyczne.
Projektowanie bazy danych
Wskaźniki repetytorium Wskaźniki int Y = 1, X = 2; X = 5; int *p = &X; Y X p 4 4 p = &Y; *p = 4; 5.
Klasy i obiekty.
Hibernate zapytania.
Odwzorowanie obiektowo-relacyjne
Java applet (c.d.) Nguyen Hung Son Uniwersytet Warszawski.
Marcin Pamuła Mateusz Stefek
Licznik template<class Count_Type> class Count { public:
Data powstania: 2001 rok Autor i lider: Gavin King Najnowsza wersja: Licencja: Open Source.
DZIEDZICZENIE · klasy bazowe i klasy pochodne WyświetlAutora( ) Autor
ODE Informacje wstępne. Pojęcia podstawowe n Obiektowa baza danych u język komunikacji u ziarnistość obiektów u identyfikacja obiektów n Transakcja -
BIRT.
Widoki.
Hibernate Klasy trwałe
Odwzorowania relacyjno-obiektowe Hibernate Tranzakcyjność i bezpieczeństwo danych.
Metody autoryzacji użytkowników wymaga integracji z systemem operacyjnym nie wymaga logowania mała pewność mechanizmu wymaga logowania duża pewność mechanizmu.
Bezpieczeństwo Procedury składowane Funkcje i Wyzwalacze
Czytanie, pisanie i rysowanie – cd.. Jeszcze jeden strumyk PrintStream działa jak PrintWriter, ale: Używa domyślnego (systemowego) kodowania Nie wyrzuca.
Projektowanie warstwy serwera Współpraca z XML. Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu.
Odwzorowania relacyjno-obiektowe Hibernate Klasy trwałe.
Odwzorowania relacyjno-obiektowe Hibernate zapytania.
Projektowanie warstwy serwera DisplayTag. Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu.
Projektowanie warstwy serwera Acegi. Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego.
Projektowanie warstwy serwera Spring MVC - uzupełnienie.
Hibernate relacje.
Projektowanie warstwy serwera Znaczniki jsp. Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu.
Odwzorowania relacyjno-obiektowe Hibernate Tranzakcyjność i bezpieczeństwo danych.
Projektowanie warstwy serwera Wprowadzenie. Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu.
Język SQL (Structured Query Language) DDL (Data Definition Language)
C# Windows Forms Zastosowania Informatyki Wykład 3
Podstawy C# Grupa .NET PO.
Programowanie obiektowe III rok EiT
Instrukcje: CREATE, INSERT, UPDATE, DELETE, DROP
PIO 3_2, Zofia Kruczkiewicz1 Wykład 3 – część druga Iteracyjno-rozwojowy cykl oprogramowania 3.
sortowanie na bazie – wykorzystanie sortowania ze zliczaniem
Tworzenie aplikacji mobilnych
Programowanie obiektowe III rok EiT
ASP.NET Dynamic Data Jakub Binkowski Jakub Binkowski Visual C# MVP
SQL - Structured Query Language
Programowanie obiektowe Wykład 7 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/20 Dariusz Wardowski.
Tworzenie Aplikacji Internetowych dr Wojciech M. Gańcza 8.
Tworzenie Aplikacji Internetowych dr Wojciech M. Gańcza 3.
Projekt i częściowa implementacja gry logicznej w technologii HTML5
Zpiratował Rafał Kaczyński. Jest to technologia pozwalająca mapować dane obiektowe na odpowiadające im struktury w bazach danych. Hibernate pozwala na.
Dobry kod OO Jeżeli zapytamy statystycznego programistę z czym kojarzy mu się dobry kod OO to najprawdopodobniej będzie mówił o wzorcach projektowych.
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Marcin nowak, Wojciech baszczyk
1 SBD, L.Banachowski Zaawansowane cechy SQL Powtórzenie wyk ł adu 5.
Entity Framework worth it or not?
Piotr Czapiewski Wydział Informatyki ZUT Wykład 2.
Hibernate Podstawy.
Odwzorowania relacyjno-obiektowe Hibernate preselekcja.
Odwzorowania relacyjno-obiektowe Hibernate Podstawy.
Paweł Starzyk Obiektowe metody projektowania systemów
Konfiguracja HIBERnate, postgresQL + przykładowa aplikacja
Object-relational mapping (aka O/RM, ORM, and O/R mapping)
Typy i metody sparametryzowane (generics) (c) Krzysztof Barteczko 2014.
Oracle Data Modeler (4.1). Aplikacja Wymagania biznesowe Tworzenie systemu informacyjnego Procesy Informacje Analiza Projektowanie Browser: Hollywood.
Refaktoryzacja „Any fool can write a code that computer understands. Good programers write code that human can understand” – Martin Fowler.
InMoST, Java – przykładowa aplikacja Bartosz.Michalik
Sławomir Civic Białek HIBERNATE.
PHP (wstęp) Personal Home Page Tools (PHP Tools)
(według:
Akademia C# - Lab2 Zmienne, instrukcje warunkowe, pętle, debugger,
(c) Krzysztof Barteczko 2014
Programowanie Obiektowe – Wykład 2
Zapis prezentacji:

Hibernate uzupełnienie

Plan wykładu Dziedziczenie Konfiguracja Statystyki MetaDane Nazewnictwo Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 2

(strategy=InheritanceType.TABLE_PER_CLASS) Dziedziczenie (I) @Inheritance (strategy=InheritanceType.TABLE_PER_CLASS) (strategy=InheritanceType.JOINED) (strategy=InheritanceType.SINGLE_TABLE) Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Dziedziczenie (II) @Entity @Inheritance(strategy=InheritanceType.TABLE_PER_CLASS) public class Slownik { @Id @SequenceGenerator(name = "Slownik_SEQUENCE", sequenceName = "slownik_seq") @GeneratedValue(generator = "Slownik_SEQUENCE") private int id; private String nazwa; } Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Dziedziczenie (III) @Entity public class TypProcesora extends Slownik {} TypProcesora slownik = null; if (slownikId == -1) slownik = new TypProcesora(); else slownik = (TypProcesora) slownikService.get(slownikId); Slownik slownik = slownikService.get(slownikId); Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Dziedziczenie (IV) - TABLE_PER_CLASS Oddzielna tabela w bazie danych dla każdej klasy dziedziczącej Mniejsze wykorzystanie pamięci w bazie danych Prostszy import danych, łatwiejsza administracja bazą danych Niska efektywność zapytań Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Dziedziczenie (V) - SINGLE_TABLE Pojedyncza tabela w bazie danych dla wszystkich klas dziedziczących Znaczna liczba pustych komórek w tabeli (kolumny tabeli są sumą kolumn dla każdej klasy) Dodatkowa kolumna dtype z nazwa klasy Trudności w imporcie danych Wysoka efektywność zapytań Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

<prop key="hibernate. show_sql">true</prop> Konfiguracja (I) <prop key="hibernate. show_sql">true</prop> hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect hibernate.default_schema = example hibernate.hbm2ddl.auto = update hibernate.show_sql = false hibernate.format_sql = false Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 8

hibernate.connection.isolation hibernate.generate_statistics = true Konfiguracja (II) hibernate.connection.isolation hibernate.generate_statistics = true hibernate.jdbc.batch_size 20 hibernate.default_batch_fetch_size hibernate.cache.use_query_cache hibernate.cache.use_second_level_cache Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 9

hibernate.c3p0.min_size=5 hibernate.c3p0.max_size=20 Konfiguracja (III) <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> hibernate.c3p0.min_size=5 hibernate.c3p0.max_size=20 hibernate.c3p0.timeout=300 hibernate.c3p0.max_statements=50 hibernate.c3p0.idle_test_period=300 Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 10

log4j.logger.org.hibernate.tool.hbm2ddl = error org.hibernate Loging log4j.logger.org.hibernate.tool.hbm2ddl = error org.hibernate org.hibernate.SQL org.hibernate.type org.hibernate.cache org.hibernate.secure org.hibernate.jdbc org.hibernate.transaction Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 11

getHibernateTemplate().getSessionFactory() .getStatistics() Statystyka getHibernateTemplate().getSessionFactory() .getStatistics() isStatisticsEnabled() getEntityLoadCount() getTransactionCount() getSuccessfulTransactionCount() Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

MetaDane ClassMetadata uMeta = sessionfactory.getClassMetadata(Uzytkownik.class); Object[] propertyValues = uMeta.getPropertyValues(uzytkownik); String[] propertyNames = uMeta.getPropertyNames(); Type[] propertyTypes = uMeta.getPropertyTypes(); Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

public class MyNamingStartegy extends DefaultNamingStrategy { Naming Strategy (I) public class MyNamingStartegy extends DefaultNamingStrategy { @Override public String classToTableName(String className) return "kura_" + super.classToTableName(className); } ... Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

<bean id="naming" class=”commons.MyNamingStartegy"> Naming Strategy (II) <bean id="naming" class=”commons.MyNamingStartegy"> </bean> <bean id="hibernateSessionFactory” ...> ... <property name="namingStrategy" ref ="naming"></property> .... Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Session session = sessionFactory.openSession(); batch-size Session session = sessionFactory.openSession(); Transaction tx = session.beginTransaction(); for ( int i=0; i<100000; i++ ) { Uzytkownik uzytkownik = new Uzytkownik(.....); session.save(uzytkownik); if ( i % 20 == 0 ) { session.flush(); session.clear(); }} tx.commit(); session.close(); Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

getHibernateTemplate().evict(Object) getHibernateTemplate().clear() First-level Cache getHibernateTemplate().evict(Object) getHibernateTemplate().clear() Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Second-level Cache getHibernateTemplate().getSessionFactory().evict (Haslo.class); //deprecated getHibernateTemplate().getSessionFactory().evict (Haslo.class,id); //deprecated Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Query uzytkownikByImie = Query cache Query uzytkownikByImie = session.createQuery("from Uzytkownik u where u.imie = :imie"); uzytkownikByImie.setString(”Marek", imie); uzytkownikByImie.setCacheable(true); uzytkownikByName.setCacheRegion ("UzytkownikQueries") Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

DBCConnectionException - wskazuje błąd komunikacji na poziomie JDBC SQLGrammarException - wskazuje problem z gramatyką i składną polecenia SQL. ConstraintViolationException - naruszenie integralności danych LockAcquisitionException - problem naruszenie (nabycia) blokady GenericJDBCException - inne Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego