1 / 17

Hibernate PostgreSQL

Hibernate PostgreSQL. Marcin nowak , Wojciech baszczyk. PostgreSQL. Jest to jeden z najpopularniejszych wolnodostępnych systemów zarządzania relacyjnymi bazami danych Działa na wielu systemach operacyjnych

Télécharger la présentation

Hibernate PostgreSQL

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. HibernatePostgreSQL Marcin nowak, Wojciech baszczyk

  2. PostgreSQL • Jest to jeden z najpopularniejszych wolnodostępnych systemów zarządzania relacyjnymi bazami danych • Działa na wielu systemach operacyjnych • Posiada mechanizm MultiversionConcurrency Control jednocześnie zachowując zasady ACID. • Zawiera razszeżenia obiektowe - definiowanie nowych typów, czy dziedziczenie typów tablic • Zgodność ze standardem SQL • pgAdmin

  3. PostgreSQL - ograniczenia

  4. Instalacja silnika PostgreSQL • W celu instalacji należy pobrać odpowiednią wersję ze strony:http://www.postgresql.org/download/ • Instalacja jest bardzo prosta i intuicyjna – wystarczy zaakceptować licencję, odpowiednią liczbę razy kliknąć „next”, a końcu „finish” • Pobrana paczka zawiera serwer bazy PostgreSQL oraz narzędzie do zarządzania bazą – pgAdmin III • Tworzenie nowej bazy danych również bardzo intuicyjne

  5. pgAdmin III – główne okno

  6. pgAdmin III – zapytania SQL

  7. Co to jest Hibernate? • Framework będący warstwą pośredniczącą pomiędzy bazą danych a aplikacją • Główną funkcjonalnością jest mapowanie obiektowo-relacyjne • Składa się kilku podprojektów, jak HibernateAnnotations, HibernateShards, HibernateTools itd. • NHibernate – implementacja mapowania obiektowo-relacyjnego dla platformy .NET

  8. Dodawanie zależności Hibernate do projektu • Można ręcznie pobierać odpowiednie jary, ale wygodniej wykorzystać Mavena • Wymagane zależności:<groupId>org.hibernate</groupId><artifactId>hibernate-core</groudId><version>4.3.4.Final</version> • Trzeba również dodać sterownik do silnika SQL:<groupId>org.postgresql</groupId><artifactId>postgresql</artifactId><version>9.3-1101-jdbc41</version>

  9. hibernate.cfg.xml • Podstawowy plik konfigurujący połączenie z bazą danych oraz mapowanie obiektowo-relacyjne • Można w nim ustawić bardzo dużo parametrów, jednak w przypadku tego tutoriala ograniczymy się do podstawowych • Najprościej ściągnąć szablon z Internetu i pozmieniać w nim odpowiednie pola

  10. connection.driver_class – klasa sterownika silnika SQL • connection.url – adres:port/nazwa_bazy • connection.username, connection.password – oczywiste • connection.pool_size – liczba połączeń w puli JDBC • Uwaga:„ The built-in Hibernate connection pool is in no way intended for production use. It lacks several features found on production-ready connection pools. See the section discussion in Hibernate Developer Guide for further information.”~http://docs.jboss.org/hibernate/orm/4.2/quickstart/en-US/html/ch02.html#hibernate-gsg-tutorial-basic-config

  11. dialect – klasa wspomagająca tworzenie zapytań SQL dla konkretnego dialektu • Pełna lista dialektów: http://docs.jboss.org/hibernate/orm/3.5/javadocs/org/hibernate/dialect/package-summary.html • show_sql – włączenie/wyłączenie logowania przez hibernate treści zapytań SQL • hbm2ddl.auto – parametr odpowiedzialny za generowanie schematu bazy danych na podstawie zdefiniowanego mapowania. Możliwe wartości: • create – za każdym razem tworzy od nowa schemat bazy • create-drop – tak samo jak wyżej, dodatkowo po zakończeniu działania dropuje bazę • update – stara się aktualizować ewentualne zmiany schematu • validate – sprawdza, czy schemat bazy zgadza się z mapowaniem

  12. W tej sekcji listujemy wszystkie klasy, które mają zostać mapowane i zapisywane w bazie danych • Jeżeli korzystamy z mapowania przy pomocy XML’a (o tym za chwilę), zamiast <mappingclass=„klasa”/> należy użyć:<mappingresource=„ścieżka_do_pliku_mapującego.hbm.xml”/>

  13. Klasa HibernateUtil • Utworzenie sessionFactory jest kosztowne, więc wykonujemy je tylko raz jako zmienną statyczną ogólnodostępnej klasy • W metodzie configure(string) podajemy ścieżkę dostępu do pliku hibernate.cfg.xml – względem katalogu resources, gdzie domyślnie szuka Hibernate • Jedyny sposób utworzenia sessionFactory, który nie jest „deprecated” w Hibernate 4.3.x

  14. Mapowanie obiektowo-relacyjne • Na początku tworzymy klasy, których instancje chcemy przechowywać w bazie • Standard POJO – PlainOld Java Object – prywatne pola, gettery i setery o nazewnictwie getNazwaPola() (ew. isNazwaPola() dla boolean) – bez żadnych udziwnień • Następnie mapujemy obiekt na relację używając jedną z dwóch metod: • starszej - przy pomocy plików XML • nowszej - przy pomocy adnotacji

  15. Mapowanie przez pliki XML • Do każdej mapowanej klasy tworzymy odpowiadający plik nazwa_klasy.hbm.xml • Wypisujemy wszystkie pola, które mają być odwzorowywane w bazie • Niewygodne – zmiana w kodzie wymusza tę samą zmianę w pliku xml

  16. Mapowanie przez adnotacje • Nie trzeba tworzyć żadnych dodatkowych plików, całe mapowanie zawarte w adnotacjach • Można adnotować pola albo gettery • Mapowaną klasę oznaczamy przy pomocy @Entity, następnie oznaczamy jej pola nie będące typami prostymi oraz mające szczególne właściwości (np. klucz główny) odpowiednimi adnotacjami

  17. Podstawowe adnotacje • @Entity - klasa jest encją@Table(name=…) – nazwa tabeli w bazie, można ustawić dodatkowe opcje • @Id – klucz główny@GeneratedValue(strategy=…) – strategia przydzielania id@Column(name=…) – nazwa kolumny, można ustawić dodatkowe opcje • @ManyToOne – relacja wiele do jednego@OneToMany, @OneToOne, @ManyToMany – analogicznie@Embedded – pola zależnej klasy będą w tej samej tabeli (nie będzie tworzona osobna tabela) • @Transient – pole nie będzie zapisywane@Lob – duży obiekt (largeobject)

More Related