06 Przykład wykorzystania Hibernateid 6375 ppt

background image

Tworzenie warstwy

trwałości danych w

oparciu o Hibernate

Rafał Kasprzyk

background image

Rafał Kasprzyk

Pierwszy przykład

Naukę Hibernate rozpoczniemy od prostego

przykładu – katalog użytkowników

użytkownik to nasza encja

Informacje opisujące użytkownika, które będą nas

interesowały, to jedynie jego identyfikator, imię i

nazwisko

package pl.isolution.hibernate;

public class User {

private Long id;

private String name;

private String surname;

public Long getId() {

return id;

}

public void setId(Long id) {

this.id = id;

}

// pozostałe metody setXXX i getXXX

}

background image

Rafał Kasprzyk

Klasa korzystająca z API

Hibernate

package pl.isolution.hibernate;

import java.util.Iterator;

import java.util.List;

import org.hibernate.Criteria;

import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.Transaction;

import org.hibernate.cfg.Configuration;

public class HibSample {

private final static SessionFactory factory;

static {

// I. Inicjalizacja Hibernate

Configuration cfg = new Configuration().configure();

// II. Utworzenie fabryki sesji Hibernate

factory = cfg.buildSessionFactory();

}

public static void main(String[] args) {

HibSample hs = new HibSample();

hs.createUser();

hs.displayUsers();

}

public Long createUser() {
//…

}

public void displayUsers() {
//…

}

}

background image

Rafał Kasprzyk

Tworzenie nowych użytkowników

public Long createUser() {

// III. Otwarcie sesji Hibernate

Session session = factory.openSession();

// IV. Rozpoczęcie transakcji

Transaction transaction = session.beginTransaction();

// V a. Utworzenie użytkownika

User user = new User();

user.setName("Jan");

user.setSurname("Kowalski");

// VI a. Zapisanie użytkownika w bazie danych

Long id = (Long)session.save(user);

// VII a. Zatwierdzenie transakcji

transaction.commit();

// VIII a. Zamknięcie sesji Hibernate

session.close();


return id;

}

background image

Rafał Kasprzyk

Wyświetlanie użytkowników

public void displayUsers() {

// III. Otwarcie sesji Hibernate

Session session = factory.openSession();

// IV. Rozpoczęcie transakcji

Transaction transaction =
session.beginTransaction();

// V b. Utworzenie zapytania do bazy o listę

użytkowników

Criteria criteria =

session.createCriteria(User.class);

// VI b. Wykonanie zapytania

List users = criteria.list();

// VII b. Iterowanie po wyniku zapytania

for (Iterator it = users.iterator(); it.hasNext();){

User user = (User) it.next();

System.out.println(user.getSurname());

}

// VIII b. Zatwierdzenie transakcji

transaction.commit();

// IX b. Zamknięcie sesji Hibernate

session.close();

}

background image

Rafał Kasprzyk

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>

<property name="connection.driver_class">

org.hsqldb.jdbcDriver</property>

<property name="connection.url">jdbc:hsqldb:.</property>

<property name="connection.username">admin</property>

<property name="connection.password">isol</property>

<property name="connection.pool_size">1</property>

<property name="dialect">

org.hibernate.dialect.HSQLDialect</property>

<property

name="current_session_context_class">thread</property>

<property name="cache.provider_class">

org.hibernate.cache.NoCacheProvider</property>

<property name="show_sql">true</property>

<property name="hbm2ddl.auto">create</property>

<mapping resource="pl/isolution/hibernate/User.hbm.xml"/>

</session-factory>

</hibernate-configuration>

background image

Rafał Kasprzyk

User.hbm.xml – przykład

odwzorowania

<?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="pl.isolution.hibernate">

//odwzorowanie klasy na tabelę

<class name="User" table="User">

<id name="id">
<generator class="native"/>

//definicja generatora

</id>

//nazwa kolumny w bazie danych domyślnie = wartość atrybutu

name

<property name="name" column="NAME"

//domyślna wartość atrybutu type najczęściej OK

type="string" length="10"

//wartość atrybutu not-null domyślnie = false

not-null="true"

// domyślnie true, dla pól wyliczeniowych należy ustawić na

false

update= "true" insert= "true" />

<property name="surname" column="SURNAME"
length="25" not-null="true"/>

</class>

</hibernate-mapping>

background image

Rafał Kasprzyk

Uruchomienie aplikacji

Uruchomienie aplikacji sprowadza

się do wykonania polecenia

java pl.isolution.hibernate.HibSample

Aplikacja wymaga biblioteki

hsqldb.jar

W ten sposób stworzona została

pierwsza aplikacja, która jako

warstwę integracji wykorzystuje

bibliotekę Hibernate

background image

Rafał Kasprzyk

Kolejny przykład

Jeszcze jeden prosty przykład zanim

przejdziemy do bardziej

zaawansowanych sposobów

wykorzystania biblioteki Hibernate

Pamiętajmy, że ”trening czyni mistrza”

Podstawowe elementy aplikacji

encje – klasy trwałe

pliki mapowań

pliki konfiguracyjne

background image

Rafał Kasprzyk

Podstawowe elementy aplikacji

(1/3)

Klasy reprezentujące encje

Posiadają metody typu setXXX i getXXX dla

atrybutów, które będą utrwalane

Posiadają bezargumentowe konstruktory

package pl.isolution.hibernate;

public class OrganizationUnit {

private int id;

private String symbol

private Date date

public void setId(int id) {

this.id = id;

}

public int getId() {

return id;

}

// pozostałe metody setXXX i getXXX

}

background image

Rafał Kasprzyk

Podstawowe elementy aplikacji

(2/3)

Pliki mapowań

(OrganizationUnit.hbm.xml)

<?xml …?>
<!DOCTYPE …>

<hibernate-mapping package="pl.isolution.hibernate" >

<class name="OrganizationUnit"

table="OrganizationUnit">

<id name="id" column="ID">

<generator class="increment"/>

</id>

<property name="date" column="DATE"

type="timestamp" />

<property name="symbol"/>

</class>

</hibernate-mapping>

background image

Rafał Kasprzyk

Podstawowe elementy aplikacji

(3/3)

Pliki konfiguracyjny

hibernate.properties

hibernate.cfg.xml

<hibernate-configuration>

<session-factory>

<property name="connection.driver_class">

org.hsqldb.jdbcDriver</property>

<property name="connection.url">

jdbc:hsqldb:data/sample</property>

<property

name="connection.username">sa</property>

<property name="connection.password"></property>

<property name="dialect">

org.hibernate.dialect.HSQLDialect</property>

<property name="show_sql">true</property>

<mapping resource="OrganizationUnit.hbm.xml"/>

</session-factory>

</hibernate-configuration>

background image

Rafał Kasprzyk

Przykładowy kod wykonywalny

public class HibSample {
private final static

SessionFactory sessionFactory =
new Configuration()
.configure()
.buildSessionFactory();
private final static
ThreadLocal threadLocal = new ThreadLocal();

public static void main(String[] args) {

HibSample hs = new HibSample();
hs.createUnit(

"

U01

"

, new Date());

}

public void createUnit(Strind str, Date date) {
//…
}

}

background image

Rafał Kasprzyk

Przykładowy kod wykonywalny

public void createUnit(Strind str, Date date) {

Session session =

(Session) threadLocal.get();

if( session == null) {

session = sessionFactory.openSession();

threadLocal.set(session);

}

Transaction transaction =

session.beginTransaction();

OrganizationUnit unit = new OrganizationUnit();

unit.setSymbol(str);

unit.setDate(date);

session.save(unit);

transaction.commit();

session.close();

threadLocal.set(null);
}

background image

Rafał Kasprzyk

Podsumowanie

Algorytm budowy aplikacji

Przygotować klasy trwałe

Przygotować metadane (pliki

mapowań)

Utrwalanie obiektów

Ładowanie utrwalonych obiektów


Document Outline


Wyszukiwarka

Podobne podstrony:
06 Przykład wykorzystania Hibernate(1)id 6376 ppt
06 Kwestia potencjalności Aid 6191 ppt
06 Podstawy syntezy polimerówid 6357 ppt
06 Testowanie hipotez statystycznychid 6412 ppt
przyrodnicze wykorzystanie osadow sciekowych ppt
06 podstawy SQL 3id 6524 ppt
Przyklady wykorzystania zasad i metod nauczania, Ratownicto Medyczne, Dydaktyka
Przykłady wykorzystania systemu WMS w przedsiębiorstwach
06 Proces inzynierii wymaganid 6526 ppt
06 Zagadnienia zrodla poznania I 08 ppt
06 wartość pieniądza w czasieid 6431 ppt
06 przykladowy schemat 1
06 ZABURZENIA W KRĄŻENIU KRWIid 6175 ppt
Wybrane przyklady wykorzystania sprzetu laboratoryjnego 1, Kosmetologia, Chemia
Przykład wykorzystania w praktyce systemów GIS, Zarządzanie i inżynieria produkcji, Semestr 4, Gospo
projekt 06 przyklad 02 id 39794 Nieznany
06 Dobór personelu i wyposażeniaid 6280 ppt
2009 06 03 POZ 11id 26815 ppt

więcej podobnych podstron