Java - HIBERNATE - PowerPoint PPT Presentation

1 / 24
About This Presentation
Title:

Java - HIBERNATE

Description:

Java-HIBERNATE Przygotowali: ukasz Monkiewicz, ukasz Zawadzki Plan prezentacji Co to jest Hibernate?? Podstawowe cechy Hibernate Dlaczego Hibernate jest ... – PowerPoint PPT presentation

Number of Views:58
Avg rating:3.0/5.0
Slides: 25
Provided by: siPjwstk
Category:

less

Transcript and Presenter's Notes

Title: Java - HIBERNATE


1
Java-HIBERNATE
Przygotowali Lukasz Monkiewicz, Lukasz Zawadzki
2
Plan prezentacji
  • Co to jest Hibernate??
  • Podstawowe cechy Hibernate
  • Dlaczego Hibernate jest wartosciowa technologia??
  • Podstawowe elementy rozwijanej aplikacji
  • Uzycie zlozonych relacji i zapytan, kryteriów,
    dziedziczenia
  • XDoclet a HIBERNATE
  • Porównanie do EJB

3
Co to jest hibernate??
  • Jest to technologia wysokiej wydajnosci i
    szybkosci dzialania sluzaca do wykonywania
    operacji na obiektowo relacyjnych bazach danych
    z poziomu jezyka Java

4
Podstawowe cechy technologii Hibernate
  • Nie ma potrzeby implementowania interfejsów
  • Dowolna klasa moze byc klasa reprezentujaca encje
  • Wygodne i intuicyjne mapowanie plików struktury
    xml na klasy
  • Mniej kodu mniej bledów
  • Optymalna wydajnosc

5
Dlaczego warto nauczyc sie Hibernate
  • Proste zasady dzialania
  • Mozliwosc korzystania z mozliwosci SQL bez
    wychodzenia poza granice jezyka Java
  • Mozliwosc stworzenia duzej bazy bez wiekszego
    wkladu pracy
  • Open source
  • Dostepnosc narzedzi open source
  • Popularnosc

6
Podstawowe elementy Aplikacji
  • Klasa reprezentujaca encje
  • Posiada metody get i set dla atrybutów klasy
    pól w tabeli
  • Class Entity
  • int id
  • private void setId(int id)
  • this.id id
  • public int getId()
  • return id

7
Podstawowe elementy Aplikacji c.d.
  • Posiada bez argumentowy konstruktor.
  • Plik mapowania(Entity.hbm.xml)
  • lthibernate-mappinggt
  • ltclass name"Entity" tableEntity"gt
  • ltid name"id" column"ID"gt
  • ltgenerator class"increment"/gt
  • lt/idgt
  • ltproperty name"date" type"timestamp"
    column"DATE"/gt
  • ltproperty name"title"/gt
  • lt/classgt
  • lt/hibernate-mappinggt

8
Podstawowe elementy Aplikacji c.d.
  • Plik konfiguracji (hibernate.properties lub
    hibernate.cfg.xml)
  • lthibernate-configurationgt
  • ltsession-factorygt
  • lt!-- Database connection settings --gt
  • ltproperty name"connection.driver_class"gt
  • org.hsqldb.jdbcDriver
  • lt/propertygt
  • ltproperty name"connection.url"gt
  • jdbchsqldbdata/tutorial
  • lt/propertygt
  • ltproperty name"connection.username"gt
  • sa
  • lt/propertygt
  • ltproperty name"connection.password"gt
  • lt/propertygt
  • ltproperty name"dialect"gtorg.hibernate.dialect.
    HSQLDialect
  • lt/propertygt
  • ltproperty name"show_sql"gt

9
Podstawowe elementy Aplikacji c.d.
  • Przykladowy kod wykonywalny
  • class EntityManager
  • public static void main(String args)
  • EntityManager em new EntityMenager()
  • em.createAndStoreSomething(nazwa, new
    Date())

10
Podstawowe elementy Aplikacji c.d.
  • Przykladowy kod wykonywalny
  • public void createAndStoreSomething(String title,
    new Date())
  • public static final SessionFactory
    sessionFactory new Configuration().configure().b
    uildSessionFactory()
  • public static final ThreadLocal session new
    ThreadLocal()
  • Session s (Session) session.get()
  • if( s null)
  • s sessionFactory.openSession()
  • session.set(s)
  • Transaction tx s.beginTransaction()
  • Entity ent new Entity()
  • ent.setTitle(title)
  • ent.setDate(theDate)
  • s.save(theEvent)
  • tx.commit()
  • s.close()
  • session.set(null)

11
Podstawowe elementy Aplikacji c.d.
  • Przedstawienie relacji miedzy tabelami
  • _________________
    _________________
  • PERSON
    Entity
  • _______________
    _______________
  • person_id
    0..1 ID
  • name ------------------------
    ---------- title

  • date




  • _______________
    ________________

12
Podstawowe elementy Aplikacji c.d.
  • Klasa Person.java
  • class Person
  • int person_id
  • String name
  • Entity ent
  • //metody get i set dla atrybutów
  • public Entity getEntity()
  • return ent
  • public void setEntity(Entity ent)
  • this.ent ent

13
Podstawowe elementy Aplikacji c.d.
  • Person.hbm.xml
  • lthibernate-mappinggt
  • ltclass namePerson" tablePersons"gt
  • ltid nameperson_id" columnPERSON_ID"gt
  • ltgenerator class"increment"/gt
  • lt/idgt
  • ltproperty namename/gt
  • ltmany-to-one
  • nameent column"ID"
  • classEntity not-null"true"/gt
  • lt/classgt
  • lt/hibernate-mappinggt

14
Podstawowe elementy Aplikacji c.d.
  • Klasa Entity.java
  • class Entity
  • private Set persons new HashSet()
  • public void setPersons(Set persons)
  • this.persons persons
  • public Set getPersons()
  • return persons

15
Podstawowe elementy Aplikacji c.d.
  • Entity.hbm.xml
  • lthibernate-mappinggt
  • ltclass name"Entity" tableEntity"gt
  • ltset namepersons"gt
  • ltkey columnID"/gt
  • ltone-to-many classPerson"/gt
  • lt/setgt
  • lt/classgt
  • lt/hibernate-mappinggt

16
Podstawowe elementy Aplikacji c.d.
  • Przykladowy kod wykorzystujacy relacje
  • class EntityManager
  • public static void main(String args)
  • public static final SessionFactory
    sessionFactory new Configuration().configur
    e().buildSessionFactory()
  • public static final ThreadLocal session new
    ThreadLocal()
  • Session s (Session) session.get()
  • if( s null)
  • s sessionFactory.openSession()
  • session.set(s)
  • Transaction tx s.beginTransaction()
  • Person aPerson (Person) session.load(Person.cl
    ass, 2)
  • Entity anEntity (Entity) session.load(Event.cl
    ass, 1)
  • anEntity.getPersons().add(aPerson)
  • tx.commit()
  • s.close()
  • session.set(null)

17
Zlozone zapytania
  • List mothers session.createQuery(
  • "select mother from Cat as cat join cat.mother
    as mother where cat.name ?")
  • .setString(0, name)
  • .list()
  • List kittens session.createQuery(
  • "from Cat as cat where cat.mother ?")
  • .setEntity(0, pk)
  • .list()
  • Cat mother (Cat) session.createQuery(
  • "select cat.mother from Cat as cat where cat
    ?")
  • .setEntity(0, izi)
  • .uniqueResult()

18
Kryteria
  • List cats sess.createCriteria(Cat.class)
  • .add( Restrictions.like("name", "Fritz") )
  • .add( Restrictions.or(
  • Restrictions.eq( "age", new Integer(0) ),
  • Restrictions.isNull("age")
  • ) )
  • .list()
  • List cats sess.createCriteria(Cat.class)
  • .add( Restrictions.sql(
  • "lower(alias.name) like lower(?)", "Fritz",
    Hibernate.STRING
  • ) )
  • .list()

19
Dziedziczenie
  • public class Person
  • String name
  • Long id
  • ... // getter, setter
  • public class Employee extends Person
  • String NIP
  • ... // getter, setter

20
Dziedziczenie
  • ltclass name"Person" table"persons"
    discriminator-value"P"gt
  • ltid name"id"gt
  • ltgenerator class"native"/gt
  • lt/idgt
  • ltdiscriminator column"subclass"
    type"character"/gt
  • ltproperty name"name" type"string"/gt
  • ltsubclass name"Employee" discriminator-valueE"
    gt
  • ltproperty name"NIP" type"string"/gt
  • lt/subclassgt
  • lt/classgt

21
Relacje wiele do wiele
  • ltclass name"Person"gt
  • ltid name"id" column"personId"gt
  • ltgenerator class"native"/gt
  • lt/idgt
  • ltset name"addresses"gt
  • ltkey column"personId"/gt
  • ltmany-to-many column"addressId"
    class"Address"/gt
  • lt/setgt
  • lt/classgt
  • ltclass name"Address"gt
  • ltid name"id" column"addressId"gt
  • ltgenerator class"native"/gt
  • lt/idgt
  • ltset name"people" inverse"true"gt
  • ltkey column"addressId"/gt
  • ltmany-to-many column"personId"
    class"Person"/gt
  • lt/setgt
  • lt/classgt

22
XDoclet i Hibernate
  • /
  • _at_hibernate.class
  • table"Person"
  • /
  • public class Person
  • private Long id
  • private String name
  • /
  • _at_hibernate.id
  • generator-class"native"
  • column"PERSON_ID"
  • /
  • public Long getId() return id
  • private void setId(Long id) this.idid
  • /
  • _at_hibernate.property
  • column"NAME"
  • /

23
Porównanie do EJB
  • Mniej zbednego kodu
  • Nie wymaga serwera aplikacji
  • Wydajnosc
  • Rozbudowany jezyk zapytan

24
Podsumowanie
  • Technologia popularna ( ok. 1500 pobran dziennie
    )
  • Prosta implementacja a efekt dzialania aplikacji
  • Wiecej na www.hibernate.org
  • Literatura Hibernate in action wyd. Manning
Write a Comment
User Comments (0)
About PowerShow.com