06 Przykład wykorzystania Hibernate(1)id 6376 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 Hibernateid 6375 ppt
05 Konfiguracja Hibernate(1)id 5724 ppt
10 Pozostałe elementy Hibernate(1)id 11016 ppt
projekt 06 przyklad 02 id 39794 Nieznany
0 1 Proces technologiczny i produkcyjny przykład(1)id 1775 ppt
13 ZMIANY WSTECZNE (2)id 14517 ppt
!!! ETAPY CYKLU PROJEKTU !!!id 455 ppt
2 Podstawowe definicje (2)id 19609 ppt
2 Realizacja pracy licencjackiej rozdziałmetodologiczny (1)id 19659 ppt
02 MAKROEKONOMIA(2)id 3669 ppt
11b Azotowanie i nawęglanie (PPTminimizer)id 13076 ppt

więcej podobnych podstron