Odwzorowania relacyjno-obiektowe Hibernate preselekcja.

Slides:



Advertisements
Podobne prezentacje
Programowanie obiektowe Andrzej Ziółkowski Wykład 3.
Advertisements

Klasy i obiekty.
Hibernate zapytania.
Sposoby implementacji asocjacji
Dziedziczenie wieloaspektowe
Implementacja ekstensji klasy
Java applet (c.d.) Nguyen Hung Son Uniwersytet Warszawski.
Programowanie Obiektowe w Javie (c.d.)
Programowanie obiektowe w Javie
Marcin Pamuła Mateusz Stefek
OOPC++ - wstêp, klasy1 Klasy Do struktury można dołączyć operacje działające na jej polach. struct date { int day, month, year; void set (int d, int m,
OOP - programowanie zorientowane obiektowo w VB.NET
Model – View - Controler
Widoki.
Jacek Pospychała Pospychała Eclipse Summer School 2007Eclipse Summer School 2007.
Hibernate Klasy trwałe
Czytanie, pisanie i rysowanie – cd.. Jeszcze jeden strumyk PrintStream działa jak PrintWriter, ale: Używa domyślnego (systemowego) kodowania Nie wyrzuca.
Czytanie, pisanie i rysowanie (czyli klasa I szkoły podstawowej)

Odwzorowania relacyjno-obiektowe Hibernate Klasy trwałe.
Odwzorowania relacyjno-obiektowe Hibernate zapytania.
Spring MVC.
Projektowanie warstwy serwera DisplayTag. Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu.
Projektowanie warstwy serwera Acegi. Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego.
Projektowanie warstwy serwera Spring MVC - uzupełnienie.
Hibernate relacje.
Projektowanie warstwy serwera Znaczniki jsp. Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu.
Hibernate uzupełnienie
Odwzorowania relacyjno-obiektowe Hibernate Tranzakcyjność i bezpieczeństwo danych.
Projektowanie warstwy serwera Wprowadzenie. Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu.
Techniki i języki programowania
przygotował Michał Wdaniec
Klasy w C++. Deklaracja klasy class NazwaTwojejKlasy { //w tym miejscu piszemy definicje typów, //zmienne i funkcje jakie mają należeć do klasy. }; //tutaj.
Podstawy inżynierii oprogramowania Zofia Kruczkiewicz
PIO 3_2, Zofia Kruczkiewicz1 Wykład 3 – część druga Iteracyjno-rozwojowy cykl oprogramowania 3.
Java – coś na temat Klas Piotr Rosik
Seminarium problemowe
PIO 2_2, Zofia Kruczkiewicz1 Wykład 2 – część druga Iteracyjno-rozwojowy cykl oprogramowania 2.
Tworzenie Aplikacji Internetowych dr Wojciech M. Gańcza 8.
  ELEMENTY JĘZYKA JAVA komentarze w Javie, słowa kluczowe i operatory, proste typy danych, tablice, podstawowy zestaw instrukcji.
OCPJP Inner classes.
Dobry kod OO Jeżeli zapytamy statystycznego programistę z czym kojarzy mu się dobry kod OO to najprawdopodobniej będzie mówił o wzorcach projektowych.
BJUG_1: Typy Generyczne, Kolekcje
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Piotr Czapiewski Wydział Informatyki ZUT Wykład 2.
PROGRAMOWANIE W JAVA Informatyka Stosowana – ROK II / III Laboratoria mgr inż. Krzysztof Bzowski.
Odwzorowania relacyjno-obiektowe Hibernate Podstawy.
PIO 3_2, Zofia Kruczkiewicz1 Wykład 3 – część druga Iteracyjno-rozwojowy cykl oprogramowania 3.
Object-relational mapping (aka O/RM, ORM, and O/R mapping)
Kolekcje (3) Zbiory. Porównywanie i porządkowanie elementów kolekcji. (c) Krzysztof Barteczko 2014.
Kolekcje (4) Mapy Widoki i algorytmy (c) Krzysztof Barteczko 2014.
Elementy programowania funkcyjnego w Javie 8. Pragmatyczny przegląd. (c) Krzysztof Barteczko 2014.
Typy i metody sparametryzowane (generics) (c) Krzysztof Barteczko 2014.
do programowania obiektowego w języku Groovy
Implementacja asocjacji (z atrybutami i bez) przy użyciu: referencji (kolekcji referencji) tablic asocjacyjnych przygotował: Kamil Kowalczyk.
InMoST, Java – przykładowa aplikacja Bartosz.Michalik
Podstawowe konstrukcje języka Java Bartosz Walter InMoST Wielkopolska sieć współpracy w zakresie innowacyjnych metod wytwarzania oprogramowania Termin.
Wprowadzenie do języka Java Kolekcje w języku Java Bartosz Walter.
Android WYKŁAD 4. Agenda Bazy danych – SQLite Zestawienie mapowania w LiteORM Wyświetlanie danych w ListView Pobieranie danych z sieci – Volley Zapytania.
Innowacyjne metody wytwarzania oprogramowania Wprowadzenie do refaktoryzacji Bartosz Walter.
PHP (wstęp) Personal Home Page Tools (PHP Tools)
Programowanie Obiektowe – Wykład 6
(według:
Programowanie obiektowe II
Programowanie Obiektowe – Wykład 2
Klasy wewnętrzne. Praktyka użycia interfejsów i klas wewnętrznych
Iteracyjno-rozwojowy cykl oprogramowania 3
Zdarzenia (eventy) Zdarzenia służą do powiadomienia użytkownika, gdy w używanej klasie dojdzie do pewnych wydarzeń zdefiniowanych przez twórcę klasy.
Tworzenie wątków w Javie
Zapis prezentacji:

Odwzorowania relacyjno-obiektowe Hibernate preselekcja

Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 2 Uniwersalny mechanizm preselekcji Obiekt typu Command (dane + parametry) Kryteria Klasa rozwijająca kryteria Metody w GenericDAO

Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 3 Preselection (I) public class Preselection { protected Class entityClass; protected List criteriaList = new ArrayList (); protected Set selectedIdSet = new HashSet (); protected String tableName = "list"; protected String rowInputName = "id";....

Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 4 Preselection (II) protected int currentRow = -1; protected int rowCount = 0; protected int currentPage = 0; protected int pageSize = 50; protected String sortProperty; protected int sortProjectionIndex = -1; protected boolean sortAscending = true;.....

Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 5 AbstractCriterion public abstract class AbstractCriterion implements Criterion, Serializable { protected String path; protected String nestedPath; protected String property; public void setPath(String path) { this.path = path; this.nestedPath = CriteriaHelper.getNestedPath(path); this.property = CriteriaHelper.getNestedProperty(path); } public abstract void prepareCriteria(Criteria criteria); }

Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 6 StringLikeCriterion public class StringLikeCriterion extends AbstractCriterion { private String stringLike; public void prepareCriteria(Criteria criteria) { String[] stringList = stringLike.split("\\s"); Junction junc = Restrictions.disjunction(); for (String word : stringList) junc.add(Restrictions.ilike(getProperty(), word, MatchMode.ANYWHERE)); criteria.add(junc); }

Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 7 EntityListCriterion public class EntityListCriterion extends AbstractCriterion { private List entityIdList; public void prepareCriteria(Criteria criteria) { if (entityIdList!=null && !entityIdList.isEmpty()) { criteria.add( Restrictions.in(getProperty(), entityIdList)); }

Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 8 findByCriteria (I) public final List findByCriteria(Preselection preselection) { Criteria criteria = getSession().createCriteria(preselection.getEntityClass()); CriteriaHelper helper = new CriteriaHelper(criteria); if (preselection.getCriteriaList() != null) { for (Criterion c : preselection.getCriteriaList()) { c.prepareCriteria(helper.getSubcriteria(c.getNestedPath())); }

Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 9 findByCriteria (II) criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY); criteria.setProjection(Projections.countDistinct("id")); int rowCount = (Integer) criteria.uniqueResult(); preselection.setRowCount(rowCount); helper.addOrder(preselection.getSortProperty(), preselection.isSortAscending()); ProjectionList projectionList = Projections.projectionList(); projectionList.add(Projections.distinct(Projections.id())); projectionList.add(helper.getProjection(preselection.getSortProperty())); criteria.setProjection(projectionList);

Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 10 findByCriteria (III) criteria.setFirstResult(preselection.getCurrentPage() * preselection.getPageSize()); criteria.setMaxResults(preselection.getPageSize()); List idList = new ArrayList (); List resultList = criteria.list(); for (Object o : resultList) { Object[] row = (Object[]) o; Integer id = (Integer) row[0]; idList.add(id); }

Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 11 findByCriteria (IV) criteria = getSession().createCriteria(preselection.getEntityClass()); helper = new CriteriaHelper(criteria); criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY); criteria.add(Restrictions.in("id", idList)); helper.addOrder(preselection.getSortProperty(), preselection.isSortAscending()); List list = criteria.list(); for (int i=0;i<list.size();++i) list.set(i, (T)list.get(i)); return list; }

Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 12 CriteriaHelper (I) public class CriteriaHelper { private Map criteriaMap; public CriteriaHelper(Criteria criteria) { criteriaMap = new HashMap (); criteriaMap.put(null, criteria); }...

Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 13 CriteriaHelper (II) public static final String getNestedPath(String path) { int k = path.lastIndexOf('.'); return (k > 0) ? path.substring(0, k) : null; } public static final String getNestedProperty(String path) { int k = path.lastIndexOf('.'); return (k > 0) ? path.substring(k+1) : path; }

Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 14 CriteriaHelper (III) private static final String getAliasForNestedPath(String path) { if ( path == null) return null; return '_' + path.replace('.','_'); } private static final String getFullPath(String nestedPath, String property) { if (StringUtils.hasText(nestedPath)) return nestedPath + '.' + property; else return property; }

Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 15 CriteriaHelper (IV) public Criteria getSubcriteria(String nestedPath) { Criteria c = criteriaMap.get(nestedPath); if (c == null) { String parent = getNestedPath(nestedPath); String prop = getNestedProperty(nestedPath); c = getSubcriteria(parent); c = c.createCriteria(prop, getAliasForNestedPath(nestedPath), Criteria.LEFT_JOIN); criteriaMap.put(nestedPath, c); } return c; }... }

Odwzorowania relacyjno-obiektowe Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 16 Wykorzystanie preselection = new Preselection(Komputer.class); preselection.getCriteriaList().add ( new StringLikeCriterion("identyfikator",”KL-”)); preselection.getCriteriaList().add(new IntCriterion("faktura.id", 4)); ArrayList list = (ArrayList ) urzadzenieService.findByCriteria(preselection);