Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Odwzorowania relacyjno-obiektowe Hibernate zapytania.

Podobne prezentacje


Prezentacja na temat: "Odwzorowania relacyjno-obiektowe Hibernate zapytania."— Zapis prezentacji:

1 Odwzorowania relacyjno-obiektowe Hibernate zapytania

2 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 2 2 Zapytania w Hibernate Zapytania w języku HQL (Hibernate Query Language) Zapytania poprzez obiekty Criteria Zapytania poprzez obiekty Example Zapytania w natywnym SQL Filtry

3 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 3 3 EJB QL -selekcja Wyszukiwanie encji w kontekście EJB QL ::= [ ] [ ] [ ] [ ] Przykład: select uzytkownik from Uzytkownik uzytkownik where uzytkownik.id = 21

4 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 4 EJB QL -selekcja (II) select uzytkownik, pokoj from Uzytkownik uzytkownik, Pokoj pokoj where uzytkownik.klucz = pokoj.klucz select uzytkownik, szef from Uzytkownik uzytkownik, Uzytkownik szef where uzytkownik.szef = szef

5 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 5 Przykład zapytania (I) Query query = session.creatQuery("select u from Uzytkownik u where u.id = 21"); List uzytkownicy = query.list();

6 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 6 Przykład zapytania (II) from Uzytkownik uzytkownik where uzytkownik.imie like ma% select uzytkownik.imie from Uzytkownik uzytkownik where uzytkownik.imie like ma% '

7 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 7 Wykorzystanie parametru Query query = session.createQuery("select u from Uzytkownik u where u.imie = :imie"); query.setParameter(imie", Jan"); List uzytkownik = query.list(); Query query = session.createQuery("select u from Uzytkownik u where u.imie = ?1"); query.setParameter(1, Jan"); List uzytkownik = query.list();

8 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 8 Większa liczba warunków (I) Object[] parametry = new Object[liczba_parametrow]; int i=0; String Zapytanie = "from Uzytkownik as u1 where "; if (imie !=null && !imie.equals("")) { parametry[i] = "%" + imie + "%"; ++i; Zapytanie = Zapytanie + "imie like ? and "; }

9 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 9 Większa liczba warunków (II) if (nazwisko !=null && !nazwisko.equals("")) { parametry[i] = "%"+nazwisko+"%"; ++i; Zapytanie = Zapytanie + "nazwisko like ? and "; } if (pokoj !=null && !pokoj.equals("")) { parametry[i] = pokoj;++i; Zapytanie = Zapytanie + "biuro.id = ? "; } ArrayList u = (ArrayList ) getHibernateTemplate().find(Zapytanie,parametry);

10 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 10 Inne zapytania from Uzytkownik u where u.imie in ( Marek', Bartosz', Piotr' ) from Uzytkownik u where u.imie not in ( Marek', Bartosz', Piotr' ) from Uzytkownik u where u.dzieci.size > 2 from Uzytkownik u where u.data > current_date from java.lang.Object o

11 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 11 Liczebność public Long count() { List list = (List) getHibernateTemplate().find("select count(*) from Uzytkownik"); Long count = (Long) list.get(0); return count; }

12 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 12 Element maksymalny public Integer max() { Integer max = 0; List list = (List) getHibernateTemplate().find("select max(u.id) from Uzytkownik u"); if (list!=null) max = (Integer) list.get(0); return max; } max, min, avg, sum, count

13 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 13 Funkcje agregujące (I) Query query = session.createQuery( "SELECT u.imie, count(*) FROM Uzytkownik AS u"); List results = query.list( ); Iterator it = results.iterator( ); while (it.hasNext( )) { Object[] result = (Object[]) it.next( ); String first = (String)result[0]; Integer count = (Integer)result[1]; }

14 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 14 Funkcje agregujące (II) select new list(u.imie, u.nazwisko) from Uzytkownik u select new Podpis(u.imie, u.nazwisko) from Uzytkownik u

15 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 15 Aktualizowanie Query q = session.createQuery("update Uzytkownik u set u.zarobki = u.zarobki * 1.10"); int updateCount = q.executeUpdate();

16 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 16 Usuwanie Query q = session.createQuery("delete from Uzytkownik u where u.fulfilledDate != null"); int deleteCount = q.executeUpdate();

17 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 17 Asocjacje inner join left outer join right outer join full join from Uzytkownik as uzytkownik inner join uzytkownik.adres as adres select u.imie a.ulica from Uzytkownik as u inner join u.adres as a

18 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 18 Asocjacje from Wypozyczenie w left join w.uzytkownik u where u.plec = 0 left join Uzytkownik u on (w.uzytkownik_id = u.id) from Uzytkownik as uzytkownik left outer join uzytkownik.dzieci as dziecko with dziecko.wiek < 10

19 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 19 Sortowanie from Uzytkownik u order by u.imie asc, u.wzrost desc, u.dataUrodzenia

20 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 20 Grupowanie select u.plec, sum(u.placa), count(u) from Uzytkownik u group by u.plec

21 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 21 Sortowanie po rozmiarze kolekcji select uzytkownik.id, uzytkownik.imie from Uzytkownik as uzytkownik left join uzytkownik.dzieci as dziecko group by uzytkownik.id, uzytkownik.imie order by count(dziecko)

22 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 22 Podzapytania (I) Select uzytkownik from Uzytkownik as uzytkownik where uzytkownik.placa > (select avg(u.placa) from Uzytkownik u)

23 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 23 Podzapytania (II) from Uzytkownik u where not exists ( from Uzytkownik as u2 where u2.szef = u )

24 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 24 Podzapytania (III) from Uzytkownik as uzytkownik where uzytkownik.pesel not in //any, some ( select t.nazwa from TypoweImiona as t ) from Uzytkownik as uzytkownik where uzytkownik.placa > all (select u.placa from Uzytkownik u where u.wiek > 50)

25 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 25 Stronicowanie session.createQuery(from Uzytkownik u where u.opis like :d").setParameter("d", "tv").setMaxResults(10).setFirstResult(10).list();

26 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 26 Unikalne rezultaty Query query = session.createQuery( "SELECT u.imie FROM Uzytkownik AS u").setMaxResults(100).uniqueResult();

27 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 27 Criteria Criteria criteria = session.createCriteria(Uzytkownik.class); criteria.setMaxResults(50); List uzytkownik = criteria.list(); List uzytkownicy = session.createCriteria(Uzytkownik.class).add(Restrictions.like(imie", Ma%") ).list();

28 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 28 Restrictions List uzytkownicy = session.createCriteria(Uzytkownik.class).add( Restrictions.like(imie", Ma%") ).add( Restrictions.or( Restrictions.eq( wiek", new Integer(30) ), Restrictions.isNull(wiek"))).list();

29 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 29 Wyszukiwanie według kryteriów (I) public ArrayList findByCriteria(UzytkownikCriteria uzytkownikPreselection) { if (uzytkownikPreselection == null) return null; Session session; session = sessionFactory().getCurrentSession(); Criteria uzytkownikCriteria = session.createCriteria(Uzytkownik.class);......

30 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 30 Wyszukiwanie według kryteriów (II) addLikeRestrictionTextLike(uzytkownikCriteria, "imie", uzytkownikPreselection.getImie()); addLikeRestrictionTextLike(uzytkownikCriteria, "nazwisko", uzytkownikPreselection.getNazwisko()); uzytkownikCriteria.setResultTransformer( Criteria.DISTINCT_ROOT_ENTITY); return (ArrayList ) uzytkownikCriteria.list(); }

31 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 31 Wyszukiwanie według kryteriów (III) Criteria pokojCriteria = uzytkownikCriteria.createCriteria(pokoj",Criteria.LEFT_JOIN); addLikeRestrictionText(pokojCriteria, nazwa", uzytkownikPreselection.getPokojNazwa());

32 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 32 Wyszukiwanie po zawartości pola tekstowego private void addLikeRestrictionText(Criteria criteria, String propertyName, String keywords) { if (!StringUtils.hasText(keywords)) return; Junction junc = Restrictions.disjunction(); junc.add(Restrictions.ilike(propertyName,keywords)); criteria.add(junc); }

33 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 33 Wyszukiwanie po zawartości pola tekstowego private void addLikeRestrictionTextLike(Criteria criteria, String propertyName, String keywords) { if (!StringUtils.hasText(keywords)) return; String[] keywordList = keywords.split("\\s"); Junction junc = Restrictions.disjunction(); for (String word : keywordList) junc.add(Restrictions.ilike(propertyName, '%' + word + '%')); criteria.add(junc); }

34 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 34 Wyszukiwanie w przedziale wartości private void addLikeRestrictionInter(Criteria criteria, String propertyName, int Wartoscod, int Wartoscdo) { Junction junc = Restrictions.disjunction(); junc.add(Restrictions.between(propertyName, Wartoscod, Wartoscdo)); criteria.add(junc); } criteria.add(Restrictions.le(getProperty(), dateEnd.getTime())); criteria.add(Restrictions.ge(getProperty(), dateStart.getTime()));

35 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 35 Wyszukiwanie po wartości private void addLikeRestrictionId(Criteria criteria, Object value) { Junction junc = Restrictions.disjunction(); junc.add(Restrictions.idEq(value)); criteria.add(junc); } junc.add(Restrictions.Eq(propertyName,value));

36 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 36 Wyszukiwanie na podstawie listy criteria.add(Restrictions.in(getProperty(), list));

37 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 37 Wyszukiwanie po zajętości pola (I) private void addLikeRestrictionisNotNull(Criteria criteria, String propertyName) { Junction junc = Restrictions.disjunction(); junc.add(Restrictions.isNotNull(propertyName)); criteria.add(junc); }

38 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 38 Wyszukiwanie po zajętości pola (II) private void addLikeRestrictionisNull(Criteria criteria, String propertyName) { Junction junc = Restrictions.disjunction(); junc.add(Restrictions.isNull(propertyName)); criteria.add(junc); }

39 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 39 Sortowanie List uzytkownicy = session.createCriteria(Uzytkownik.class).add( Restrictions.like(imie", M%").addOrder( Order.asc(imie") ).addOrder( Order.desc(wiek") ).setMaxResults(30).list();

40 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 40 List results = session.createCriteria(Uzytkownik.class).setProjection( Projections.projectionList().add( Projections.rowCount() ).add( Projections.avg(placa") ).add( Projections.max(placa") ).add( Projections.groupProperty(plec") )).list(); Projection

41 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 41 DetachedCriteria (I) DetachedCriteria query = DetachedCriteria.forClass(Uzytkownik.class).add( Property.forName(wiek").eq(30) ); Session session =....; Transaction txn = session.beginTransaction(); List results = query.getExecutableCriteria(session).list(); txn.commit(); session.close();

42 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 42 DetachedCriteria (II) DetachedCriteria avgPlaca = DetachedCriteria.forClass(Uzytkownik.class).setProjection( Property.forName(placa").avg() ); session.createCriteria(Uzytkownik.class).add( Property.forName(placa").gt(avgPlaca) ).list();

43 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 43 Wyszukiwanie przez przykład Uzytkownik uzytkownik = new Uzytkownik(); uzytkownik.setImie(Marek'); uzytkownik.setWiek(30); List results = session.createCriteria(Uzytkownik.class).add( Example.create(uzytkownik) ).list();

44 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 44 Zapytania w SQL (I) session.createSQLQuery("SELECT * FROM UZYTKOWNIK").list(); session.createSQLQuery("SELECT ID, IMIE, DATAURODZENIA FROM UZYTKOWNIK").list(); zwracana wartość: Lista Object[]

45 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 45 Zapytania w SQL (II) session.createSQLQuery("SELECT * FROM UZYTKOWNIK").addScalar("ID", Hibernate.LONG).addScalar(IMIE", Hibernate.STRING).addScalar(DATAURODZENIA", Hibernate.DATE) sess.createSQLQuery("SELECT * FROM UZYTKOWNIK").addEntity(Uzytkownik.class);

46 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 46 Zapytania w SQL (III) query = session.createSQLQuery("SELECT * FROM UZYTKOWNIK WHERE IMIE like:imie").addEntity(Uzytkownik.class); List uzytkownicy = query.setString(imie", Ma%").list();

47 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 47 Iterate Query Iterator iterator = session.createQuery("from Ksiazka k order by k.numer").iterate(); while ( iterator.hasNext() ) { Ksiazka k = (Ksiazka) iterator.next(); if ( ksiazka.wyszukiwanie(slowo) ) { iterator.remove(); break; }}

48 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 48 @Formula @Formula ("imie||' '||nazwisko") String Label; @Formula ("(select w.datawypozyczenia from Wypozyczenie w where w.ksiazka_id = id and w.datazwrotu is null)") private Date dataOstatniegoWypozyczenia; INTERVAL(0)

49 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 49 Filtr (I) @FilterDefs( { @FilterDef( name = "aktywny", parameters = @ParamDef( type = "boolean", name = "active")) }) @Entity @Filters( { @Filter( name = "aktywny", condition = "aktywny = :active") }) public class uzytkownik {....

50 Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 50 Filtr (II) session.enableFilter(aktywny").setParameter(active", true); session.createQuery.... session.getEnableFilter(aktywny") session.disableFilter(aktywny")


Pobierz ppt "Odwzorowania relacyjno-obiektowe Hibernate zapytania."

Podobne prezentacje


Reklamy Google