NHibernate Hibernate dla platformy.net. Hibernate posiada także dużą społeczność, zatem nietrudno uzyskać jakieś wsparcie w przypadku problemów.



Podobne dokumenty
Hibernate mapowanie baz danych

Mapowanie obiektowo-relacyjne z wykorzystaniem Hibernate

Wybierz kategorię Java Web i typ projektu Web Application. Kliknij przycisk Next >.

Podejście obiektowe do relacyjnych baz danych Hibernate.

Wprowadzenie do Doctrine ORM

Hibernate. 1. Wprowadzenie. 2. Uruchomienie dostarczonego przykładu. 3. Własny przykład.

Programowanie wielowarstwowe i komponentowe

Java i bazy danych. 1. JDBC podstawy, transakcje. 2. Mapowanie relacyjno obiektowe. Hibernate, przykład.

Metody dostępu do danych

Zaawansowane aplikacje internetowe - laboratorium

Bazy danych tworzenie aplikacji bazodanowych ORM / JPA

Podstawowe wykorzystanie Hibernate

Hibernate. Adrian Gawor, Adam Klekotka, Piotr Kubisz. Technologie Biznesu Elektronicznego. 12 maja 2009

NHibernate. Narzędzie mapowania obiektowo - relacyjnego

E:\DYDAKTYKA\ZAI\ZWWW\Laboratoria\L07\Java Persistence.doc 2011-lis-24, 17:0 Zaawansowane aplikacje internetowe Laboratorium Java Persistence.

Zaawansowane aplikacje internetowe - laboratorium

Aplikacja webowa w Javie szybkie programowanie biznesowych aplikacji Spring Boot + Vaadin

Metody dostępu do danych

Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf. Materiały poprawione

Zaawansowane aplikacje WWW - laboratorium

Git, Bitbucket, IntelliJ IDEA

Katalog książek cz. 2

Instrukcja laboratoryjna

Aplikacje Internetowe

Db4o obiektowa baza danych wersja.net

Automatyczne generowanie kodu. 4Developers, 26 marca 2010

Wstęp. Opis ten dotyczy wydziałów orzeczniczych.

BEAN VALIDATION. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska

1 LINQ. Zaawansowane programowanie internetowe Instrukcja nr 1

Ćwiczenie 1. Kolejki IBM Message Queue (MQ)

Wprowadzenie db4o - podstawy db4o - technikalia Przydatne wiadomości. Wprowadzenie. db4o. Norbert Potocki. 1 czerwca Norbert Potocki db4o

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Wzorce logiki dziedziny

Aplikacje WWW - laboratorium

Zaawansowane Techniki Bazodanowe

asix Autoryzacja dostępu do zasobów WWW systemu asix (na przykładzie systemu operacyjnego Windows 2008)

Podstawowe informacje o technologii Java Persistence API - przykład

Protokół JDBC współpraca z relacyjnymi bazami danych lab4. Dr inż. Zofia Kruczkiewicz Programowanie aplikacji internetowych

Wdrożenie do projektu

Poznaj ASP.NET MVC. Kamil Cieślak Microsoft Student Partner

E:\DYDAKTYKA\ZAI\ZWWW\Laboratoria\L07\Java Persistence.doc 2011-lis-24, 17:0 Zaawansowane aplikacje internetowe Laboratorium Java Persistence.

Programowanie komponentowe. Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

Wykład 3 Inżynieria oprogramowania. Przykład 1 Bezpieczeństwo(2) wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Programowanie Obiektowe GUI

PHP: bazy danych, SQL, AJAX i JSON

Leszek Stasiak Zastosowanie technologii LINQ w

Baza danych sql. 1. Wprowadzenie. 2. Repozytaria generyczne

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3

Problemy techniczne SQL Server

Ćwiczenia 9 - Swing - część 1

Baza danych sql. 1. Wprowadzenie

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

Programowanie w języku Java WYKŁAD

Problemy techniczne SQL Server

Wicket. Wstęp. Zalety Wicketa

Tworzenie i wykorzystanie usług sieciowych

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

programowanie w oparciu o platformę netbeans w praktyce

Instytut Mechaniki i Inżynierii Obliczeniowej fb.com/groups/bazydanychmt/

Karolina Rusin, Paweł Biczysko, Michał Olejnik. 11 maja 2009

W dowolnej przeglądarce internetowej należy wpisać poniższy adres:

Instrukcja tworzenia aplikacji EE na bazie aplikacji prezentowanej na zajęciach lab.4 z PIO umożliwiająca przez sieć dostęp wielu użytkownikom.

OpenOfficePL. Zestaw szablonów magazynowych. Instrukcja obsługi

1. Czynności przygotowujące aplikację działającą na platformie Java SE Biblioteka5 (należy ją pobrać z załącznika z p.1)

Poradnik zetula.pl. Jak założyć konto na zetula.pl. i zabezpieczyć dane na swoim komputerze?

Architektury Usług Internetowych. Laboratorium 2. Usługi sieciowe

Podstawy frameworka Spring

Optimed24 Przenoszenie bazy danych PostrgreSQL

Zaawansowane aplikacje internetowe - laboratorium Architektura CORBA.

Zaawansowane aplikacje internetowe - laboratorium Architektura CORBA.

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny technologiczny Politechnika Śląska

Załącznik nr 8. do Studium Wykonalności projektu Sieć Szerokopasmowa Polski Wschodniej województwo podkarpackie

Załącznik 1 instrukcje instalacji

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny technologiczny Politechnika Śląska

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

Konfiguracja modułu alarmowania w oprogramowaniu InTouch 7.11

Programowanie Obiektowe Ćwiczenie 4

Platforma e-learningowa

Ewolucja projektowania aplikacji w PHP na bazie frameworka Symfony 2

Microsoft.NET: ASP.NET MVC + Entity Framework (Code First)

Rys. 1. Główne okno programu QT Creator. Na rysunku 2 oznaczone zostały cztery przyciski, odpowiadają kolejno następującym funkcjom:

Hibernate. Od Nowicjusza do Profesjonalisty. Dave Minter Jeff Linwood

akademia androida Składowanie danych część VI

Programowanie wielowarstwowe i komponentowe

5.2. Pierwsze kroki z bazami danych

Wprowadzenie. Narzędzia i środowiska programistyczne. Laboratorium 1. Prowadzący: Kierunek: Semestr: Rok: Tomasz Gądek Informatyka Zimowy 2

System magazynowy małego sklepu.

Klasy i obiekty cz II

Programowanie w Javie

Laboratorium 9 (Więcej Aktywności, w Androidzie)

Dokumentacja panelu Klienta

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

dziennik Instrukcja obsługi

Instrukcja instalacji Control Expert 3.0

JAVA PERSISTENCE API CZĘŚĆ 2 ASPEKTY ZAAWANSOWANE. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska

Zaawansowane aplikacje internetowe - laboratorium Architektura Spring.

przygotował: Bazy danych Paweł Kasprowski Wersja 2006Z

Transkrypt:

Hibernate Każda poważniejsza aplikacja wymaga przechowywania danych w jakiejś bazie danych. Można realizować to na wiele sposobów. Można obsługę bazy danych pisać samodzielnie, do zera, albo skorzystać z gotowych frameworków bo po co wynajdywać koło od nowa? Jednym z takich frameworków jest Hibernate. Wstęp Hibernate jest frameworkiem, który pozwala realizować w prosty i szybki sposób obsługę przechowywania danych w bazie danych, niezależnie od systemu baz danych. Hibernate będzie więc warstwą pośredniczącą pomiędzy systemem baz danych, a aplikacją, będzie tak zwaną warstwą dostępu do danych (ang. persistance layer). Przede wszystkim dostarcza on translację, czy też mapowanie obiektów ze świata Javy, na relacyjne bazy danych. Strukturę mapowania definiujemy przy użyciu kodu XML, w odpowiednich plikach. Ważną zaletą projektu Hibernate jest fakt, iż pozwala on zwiększyć wydajność warstwy dostępu do danych dzięki minimalizacji liczby zapytań (poprzez buforowanie). Rysunek 1 przedstawia odpowiednie warstwy aplikacji jak widzimy, Hibernate jest pośrednikiem między aplikacją, a bazą danych. Ilustracja 1: Warstwy aplikacji Hibernate jest projektem open source, a jego liderem i inicjatorem jest Gavin King. Projekt został podzielony na kilka podprojektów takich, jak: Hibernate Core - centralna część wszystkich projektów pozostałe są jej rozszerzeniami; Hibernate Annotations pozwala na stosowanie adnotacji (zamiast dokumentów XML) do mapowania obiektów; Hibernate EntityManager dzięki temu rozszerzeniu można stosować technikę mapowania w zgodzie ze standardem Java Persistence Manager; Hibernate Shards ułatwia sterowanie Hibernate Core w przypadku wielu baz danych; Hibernate Validator dzięki temu rozszerzeniu otrzymujemy możliwość walidacji, czy też ograniczeń, które nałożymy na żądane pola; Hibernate Search pełnotekstowe wyszukiwanie w oparciu o bibliotekę Lucene; Hibernate Tools zestaw narzędzi, które ułatwiają pracę z frameworkiem (wtyczka do Eclipse, zadania dla Anta);

NHibernate Hibernate dla platformy.net. Hibernate posiada także dużą społeczność, zatem nietrudno uzyskać jakieś wsparcie w przypadku problemów. Rozpoczynamy pracę Na potrzeby artykułu, założymy, że korzystamy ze środowiska programistycznego NetBeans (wersja 6.8). Do budowania aplikacji wykorzystujemy także Mavena. Klikając prawym przyciskiem myszki na sekcję Librarier w drzewie projektu, z menu kontekstowego wybieramy opcję Add Dependencies. Pojawia się okno, w którym można wyszukać zależności (rys. 2). Wpisujemy Hibernate i czekamy, aż Maven znajdzie w swoim repozytorium odpowiednie dane. Ilustracja 2: Dodajemy Hibernate do projektu Spowoduje to automatyczną edycję pliku pom.xml przez NetBeansa. Kolejnym krokiem będzie utworzenie pliku konfiguracyjnego.hibernate.cfg.xml. Również to można zrobić automatycznie z wykorzystaniem NetBeansa, wybierając opcję dodania nowego pliku do projektu. Plik należy umieścić w katalogu src/main/resources. Jego treść przedstawiono na listingu 1.

Listing 1. Treść pliku hibernate.cfg.xml <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- Database connection settings --> <property name="connection.driver_class">com.mysql.jdbc.driver</property> <property name="hibernate.connection.url">jdbc:mysql://db4free.net:3306/helloworld</proper ty> <property name="hibernate.connection.username">helloworld</property> <property name="hibernate.connection.password">helloworldpass</property> <!-- JDBC connection pool (use the built-in) --> <property name="connection.pool_size">1</property> <!-- SQL dialect --> <property name="dialect">org.hibernate.dialect.mysqldialect</property> <!-- Enable Hibernate's automatic session context management --> <property name="current_session_context_class">thread</property> <!-- Disable the second-level cache --> <property name="cache.provider_class">org.hibernate.cache.nocacheprovider</property> <!-- Echo all executed SQL to stdout --> <property name="show_sql">false</property> <!-- Drop and re-create the database schema on startup --> <property name="hbm2ddl.auto">update</property> <mapping resource="com/helloworld/user.hbm.xml"/> </session-factory> </hibernate-configuration> Kluczowymi informacjami, które tutaj podajemy, to dane dostępu do bazy danych (znaczniki: <property name= hibernate.connection.url />, <property name= hibernate.connection.username />, <property name= hibernate.connection.password />), informacje o typie bazy danych, oraz pliki z zdefiniowanym mapowaniem (znaczniki <mapping resource=... />). Następnie tworzymy właśnie pliki z definicjami mapowanie, w naszym przypadku jest to User.hbm.xml. Jego zawartość przedstawiono na listingu 2. Tworzymy także odpowiadający mu pilk z definicją klasy opisującą mapowane obiekty (listing 3). Listing 2. Zawartość pliku User.hbm.xml <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping- 3.0.dtd"> <hibernate-mapping package="com.helloworld"> <class name="user" table="users"> <id name="id" column="id"> </id> <generator class="native"/> <property name="login"/>

<property name="password"/> <property name="email"/> </class> </hibernate-mapping> Listing 3. Zawartość pliku User.java //@Entity public class User implements Serializable { private Long id; private String login; private String password; private String email; public User() { public Long getid() { return id; public void setid(long id) { this.id = id; public String getlogin() { return login; public void setlogin(string login) { this.login = login; public String getpassword() { return password; public void setpassword(string password) { this.password = password; public String getemail() { return email; public void setemail(string email) { this.email = email;

Pozostaje jeszcze utworzyć plik HibernateUtil.java, który pozwoli nam przeprowadzać operacje na bazie danych listing 4. Również ten plik może zostać wygenerowany automatycznie przez NetBeansa poprzez wybranie opcji dodania nowego pliku do projektu. Listing 4. Plik HibernateUtil.java public class HibernateUtil { private static final SessionFactory sessionfactory = buildsessionfactory(); private static SessionFactory buildsessionfactory() { try { return new Configuration().configure("hibernate.cfg.xml").buildSessionFactory(); catch (Throwable ex) { System.err.println("Initial SessionFactory creation failed." + ex); throw new ExceptionInInitializerError(ex); private static SessionFactory getsessionfactory() { return sessionfactory; public static void saveentity(object entity) { Session session = HibernateUtil.getSessionFactory().getCurrentSession(); Transaction transaction = session.begintransaction(); session.save(entity); transaction.commit(); public static List getentities(class criteria) { Session session = HibernateUtil.getSessionFactory().getCurrentSession(); Transaction transaction = session.begintransaction(); List result = session.createcriteria(criteria).list(); transaction.commit(); return result; Przede wszystkim widzimy, że jest to singleton, który obiekt sessionfactory tworzy tylko raz. Parametryzujemy jego tworzenie poprzez podanie nazwy pliku konfiguracyjnego, który utworzyliśmy wcześniej. Poza tym, interesują nas właściwie dwie funkcje: saveentity oraz getentities. Pisząc kod HibarnateUtil.saveEntity(new User()), mamy już zapewniony zapis obiektu do bazy danych. Wcześniej należy oczywiście obiekt ten wypełnić odpowiednimi danymi. Podobnie rzecz ma się z pobieraniem obiektów z bazy danych przy pomocy funkcji getentities. Tutaj otrzymamy na wyjściu listę. Jedynym kryterium, które podajemy, jest typ (klasa) obiektu, czyli w kontekście bazy danych tabela. Zaznaczmy tutaj, że nie jest konieczne przygotowanie tabeli w bazie danych Hibernate utworzy ją w razie potrzeby automatycznie. Podsumowanie Przygotowanie komunikacji między aplikacją a bazą danych jest niezwykle proste z użyciem frameworka Hibernate w roli warstwy pośredniczącej. Jego wsparcie dla licznych typów baz danych nie ogranicza nas tylko do jednego systemu, a duża społeczność dostarczy ogromne wsparcie. Zachęcam do pogłębienia wiedzy z zakresu tego projektu. Pamiętajmy, że decydując się na Hibernate nie jesteśmy zmuszeni do korzystania z Javy można używać również platformy.net.