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 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 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 4 EJB QL -selekcja (II) select uzytkownik 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 5 Przykład zapytania (I) Query query = session.creatQuery("select u from Uzytkownik u where u.id = 21"); List uzytkownicy = query.getResultList();

6 Odwzorowania relacyjno-obiektowe 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 7 Wykorzystanie parametru Query query = session.createQuery("select u from Uzytkownik u where u.imie = :imie"); query.setParameter(imie", Jan"); List uzytkownik = query.getResultList(); Query query = session.createQuery("select u from Uzytkownik u where u.imie = ?1"); query.setParameter(1, Jan"); List uzytkownik = query.getResultList();

8 Odwzorowania relacyjno-obiektowe 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 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 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 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 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 13 Funkcje agregujące (I) Query query = session.createQuery( "SELECT u.imie, count(*) FROM Uzytkownik AS u"); List results = query.getResultList( ); 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 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 15 Aktualizowanie Query q = session.createQuery("update Uzytkownik u set u.zarobki = u.zarobki * 1.10"); int updateCount = q.executeUpdate();

16 Odwzorowania relacyjno-obiektowe 16 Usuwanie Query q = session.createQuery("delete from Uzytkownik u where u.fulfilledDate != null"); int deleteCount = q.executeUpdate();

17 Odwzorowania relacyjno-obiektowe 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 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 19 Sortowanie from Uzytkownik u order by u.imie asc, u.wzrost desc, u.dataUrodzenia

20 Odwzorowania relacyjno-obiektowe 20 Grupowanie select u.plec, sum(u.placa), count(u) from Uzytkownik u group by u.plec

21 Odwzorowania relacyjno-obiektowe 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 22 Podzapytania (I) Select uzytkownik from Uzytkownik as uzytkownik where uzytkownik.placa > (select avg(u.placa) from Uzytkownik u)

23 Odwzorowania relacyjno-obiektowe 23 Podzapytania (II) from Uzytkownik u where not exists ( from Uzytkownik as u2 where u2.szef = u )

24 Odwzorowania relacyjno-obiektowe 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 25 Stronicowanie session.createQuery(from Uzytkownik u where u.opis like :d").setParameter("d", "tv").setMaxResults(10).setFirstResult(10).listResults();

26 Odwzorowania relacyjno-obiektowe 26 Unikalne rezultaty Query query = session.createQuery( "SELECT u.imie FROM Uzytkownik AS u").setMaxResults(100).uniqueResult();

27 Odwzorowania relacyjno-obiektowe 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 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 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 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 31 Wyszukiwanie według kryteriów (III) Criteria pokojCriteria = uzytkownikCriteria.createCriteria(pokoj",Criteria.LEFT_JOIN); addLikeRestrictionText(pokojCriteria, nazwa", uzytkownikPreselection.getPokojNazwa());

32 Odwzorowania relacyjno-obiektowe 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 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 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 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 36 Wyszukiwanie na podstawie listy criteria.add(Restrictions.in(getProperty(), list));

37 Odwzorowania relacyjno-obiektowe 37 Wyszukiwanie po zajętości pola private void addLikeRestrictionisNotNull(Criteria criteria, String propertyName) { Junction junc = Restrictions.disjunction(); junc.add(Restrictions.isNotNull(propertyName)); criteria.add(junc); }

38 Odwzorowania relacyjno-obiektowe 38 Wyszukiwanie po zajętości pola private void addLikeRestrictionisNull(Criteria criteria, String propertyName) { Junction junc = Restrictions.disjunction(); junc.add(Restrictions.isNull(propertyName)); criteria.add(junc); }

39 Odwzorowania relacyjno-obiektowe 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 40 Projection 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();

41 Odwzorowania relacyjno-obiektowe 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 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 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 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 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 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 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 ("imie||' '||nazwisko") String ("(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 49 Filtr name = "aktywny", parameters type = "boolean", name = name = "aktywny", condition = "aktywny = :active") }) public class uzytkownik {....

50 Odwzorowania relacyjno-obiektowe 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