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