Zadanie 7

Transkrypt

Zadanie 7
PB, 2011-2012
Programowanie aplikacji WWW
Lista zadań nr 7
Obsługa baz danych z wykorzystaniem Hibernate
Zmodyfikuj stworzoną w zadaniu nr 6 aplikację pod kątem obsługi danych z wykorzystaniem
technologii Hibernate.
1. Stwórz klasę Book definiującą książkę, o polach takich, jakie zawiera tabela w bazie danych.
Każde pole powinno być prywatne, zaś dostęp do pól musi odbywać się poprzez metody
dostępowe (np. pole id dostępne poprzez metody getId() oraz setId()). Klasa powinna
znajdować się w pakiecie hibernate.
2. Dodaj do projektu konfigurację mechanizmu Hibernate (plik XML z konfiguracją,
mapowanie klasy Book i tabeli, niezbędne biblioteki).
3. Stwórz klasę pomocniczą zarządzającą sesją mechanizmu Hibernate i nazwij ją
HibernateUtil. Klasę umieść w pakiecie hibernate.
4. Przepisz metody edycyjne oraz listujące książki wykorzystując mechanizm Hibernate.
1
Dodawanie do projektu obsługi Hibernate
Aby dodać obsługę Hibernate do istniejącego projektu w środowisku Netbeans należy:
1. Kliknąć prawym klawiszem myszy na Source Packages, następnie wybrać Other, gałąź
Hibernate i pole Hibernate Configuration Wizard. Wcisnąć przycisk Next.
2. Po podaniu nazwy dla pliku konfiguracji, wcisnąć Next.
3. Wybrać New Database Connection.
4. Uzupełnić konfigurację połączenia z serwerem MySQL. Zmienić Driver Name na MySQL.
5. Kliknąć na stworzony plik konfiguracji. W gałęzi Optional Properties, Configuration
Properties dodać dodać opcję hibernate.show_sql o wartości true (w logu serwera widoczne
będą generowane polecenia SQL). W gałęzi Optional Properties, Miscellaneous Properties
dodać wpis hibernate.current_session_context_class o wartości thread.
Stworzenie mapowania klasy i tabeli
1. Kliknąć prawym klawiszem myszy na pakiet hibernate, następnie wybrać Other, gałąź
Hibernate i pole Hibernate Mapping Wizard. Wcisnąć przycisk Next.
2. Nadać nazwę dla pliku, np. Book i wcisnąć przycisk Next.
3. Podać nazwę klasy oraz nazwę tabeli i wcisnąć przycisk Finish.
4. Kliknąć na stworzony plik i wprowadzić mapowanie pomiędzy kolumnami tabeli i polami
klasy:
<hibernate-mapping>
<class name="hibernate.Book" table="books">
<id name="id" column="bookID">
<generator class="native"/>
</id>
<property name="title"/>
<property name="datePublished" type="timestamp"/>
</class>
</hibernate-mapping>
Stworzone mapowanie powinno być również widoczne w pliku konfiguracji Hibernate w gałęzi
Mappings. Można sprawdzić poprawność działania mapowania poprzez kliknięcie prawym
klawiszem na plik konfiguracji Hibernate, następnie wybrać Run HQL Query i w okno wpisać from
Book. Uruchomić zapytanie.
2
Dodanie do projektu klasy pomocniczej obsługi sesji Hibernate
Aby dodać do projektu klasę pomocniczą obsługi sesji Hibernate w środowisku Netbeans należy:
1. Kliknąć prawym klawiszem myszy na Source Packages, następnie wybrać Other, gałąź
Hibernate i pole HibernateUtil. Wcisnąć przycisk Next.
2. Po podaniu nazwy dla pliku wcisnąć Finish.
Pobieranie obiektów z bazy
Fragment kodu odpowiedzialny za pobieranie książek z bazy:
List<Book> books;
Session sessionHibernate = HibernateUtil.getSessionFactory().getCurrentSession();
sessionHibernate.beginTransaction();
books = sessionHibernate.createQuery("from Book").list();
sessionHibernate.getTransaction().commit();
Dodawanie nowych obiektów do bazy
Fragment kodu odpowiedzialny za dodawanie nowej książki do bazy:
Session sessionHibernate = HibernateUtil.getSessionFactory().getCurrentSession();
Book book;
sessionHibernate.beginTransaction();
book = new Book();
book.setTitle(title);
book.setDatePublished(datePublished);
sessionHibernate.save(book);
sessionHibernate.getTransaction().commit();
Edycja istniejących w bazie obiektów
Fragment kodu odpowiedzialny za edycję istniejącej w bazie książki:
List<Book> books;
Session sessionHibernate = HibernateUtil.getSessionFactory().getCurrentSession();
sessionHibernate.beginTransaction();
books = sessionHibernate.createQuery("from Book where id=" + id).list();
3
((Book)books.get(0)).setTitle(title);
((Book)books.get(0)).setDatePublished(datePublished);
sessionHibernate.getTransaction().commit();
Usuwanie istniejących w bazie obiektów
Fragment kodu odpowiedzialny za usunięcie istniejącej w bazie książki:
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Object book = session.load(Book.class,id);
session.delete(book);
session.getTransaction().commit();
Linki
Dokumentacja użytkowania mechanizmu Hibernate:
http://docs.jboss.org/hibernate/core/3.3/reference/en/html/tutorial.html
4