Criteria Når og hvorfor bruke Criteria i Hibernate.

Slides:



Advertisements
Liknende presentasjoner
1 Hjelp Ys Men å støtte lokalt arbeid for barn og unge Ys Men: Kristne verdier I praksis. Alle barn er våre barn.
Advertisements

Mer om SQL-spørringer og funksjoner
Tilpasse spørringer i RT Kolonnetilpassninger Egne spørringer Legge spørring til forside Legge spørring til Dashboard.
Everyone Print Kalle Snarheim.
Mange til mange sammenhengen
Høgskolen i Oslo Webprogrammering SQL og databaser del 3.
Java database persistence framework.  SELECT by FROM postnr AS p WHERE ( SELECT DISTINCT postnr FROM addr AS a WHERE user.adrId = a.Id ) = p.postnr;
NUUG.topic = Ruby.new Johannes Brodwall Takk til Dave Thomas for bruk av enkelte slides.
Avansert SQL og problemløsning
Strategisk og taktisk SOA Fagforbundet/Sykehuspartner Johannes Brodwall, Ikke virksomhetsarkitekt Steria Norway.
Web Client Software Factory Inge StubdalLevel 300 Avanade.
Begrenset redigering “Klubbjournalister” For web ansvarlig klubb.
Mer sortering Mer Debugging Introduksjon til strukturer.
Utviklingsstrategi – Mobility Kai Quale, Bjørn Kristoffersen.
Eksempel: Administrasjon av biler. Eksempel •Program for å administrere informasjon om biler •Vi ser på tre deler: –Registrere biler: legge inn i tabell.
© GT/SAPP/USIT UNIVERSITETET I OSLO :00 Katalog, LDAP, distribusjon av personopplysninger...
© GT/SAPP/USIT University of Oslo, Norway Cerebrum By Bård H.M. Jakobsen.
Tema: Introduksjon Hvorfor Velocity? Installasjon Velocity VS. JSF / JSP Eksempler Oppsumering.
C# for javaprogrammerere
Android-Programmering Våren Lagring av data SharedPreferences Filsystem Database.
Filer Finne minste Finne Største Beregne gjennomsnitt Variabler Tabeller – Arrays Lage frekvenstabell.
Jæger: Robuste og sikre systemer INF150 Programmering mandag 2.10 Default values – standardverdier ved oppstart MER OM: Sub-prosedyrer og sub-funksjoner.
Relasjonsmodellen, del II
LC238D Datamodellering og databaser Else Lervik, september 2012 Forelesning 6, Uke 39 Objektorientering i ER-modeller.
Kap 05 Abstrakte datastrukturer. Arv - Implementering Interface / Abstrakte klasser / Konkrete klasser Concrete classAbstract class Interface extends.
Konfigurasjon - Kjekt å ha du får sikkert ikke bruk for det en vakker dag Anders Karlsen Steria.
SAP Best Practices Forhåndsdefinert, bransjespesifikk og generell kunnskap Tilgjengelighet for SAPs kunder og partnere.
Copyright © 2003 Systek J2EE Teknologier Java Workshop CBA Johannes Brodwall, Systek as.
Kvinner og arbeid – problemet menn og andre barrierer. Anne Britt Djuve, Fafo 8.mars 2008.
Step 1: “State-of-the-art” Knowledge data base Step 2: Framework definitions Step 3: Project analysis Step 4: User requirements and priorities Step 7:
MeSH = Medical Subject Headings, utviklet av NLM I MeSH tesaurus er det snart MeSH.
Triggere Mutasjoner i basen. Triggers Triggers are stored procedures that execute automatically when something (event) happens in the database: : data.
Instead-of-trigger Faglig forum. Instead-of-trigger Problem: En har et VIEW som består av mange JOINs. Komplekst å oppdatere alle tabellene som inngår.
JavaOne oppsumering tobias k torrissen
  Den perfekte julegaven til Javakoden din Johannes Brodwall Steria.
Eksempel på SQL ”SQL-setninger” har en struktur som likner på ”naturlig språk”, med ”verb, subjekter og adjektiver”. SQL-setningene begynner alltid med.
Dynamiske nettsider PHP Del 2 – Kontrollstrukturer.
Classification: Internal Status: Draft Prosjektforslag 9 Eksperter i Team - Gullfakslandsbyen 2008 Ny plattform på Gullfaks Sør Statfjord MÅL: Øke oljeproduksjonen.
Citation and reference tools for your master thesis
Fødselsdato (dmå) er født har lønn Ansatt (ansnr) Beløp (NKr)+ Telefon
OOT Seminar H-97 CORBA Praktisk del. Valg av ORB implementasjon n Har valgt å bruke Visigenic sin ORB implementsjon n ORB’en er 100% Java kodet n Bygger.
Linq To SQL Fagdag 20. November DataContext  DataContexten er mappingen mot databasen –Generer objekter for alle entiteter (tabeller), med properties.
Paradigmer i Programmering 3. Højere ordens funktioner Idag: Højere ordens funktioner Algebraiske datatyper Næste gang: I/O, Filer, interaktive programmer.
Database tilgang Opret forbindelse til din Ms SQL database inde i Visual Studio fra Server Explorer vinduet.
1 Kap 06 Ordnede / Sorterte lister Oppgave nr 06_02 Polynomer Klassehierarki Javadokumentasjon.
Løsningsforslag til MOFScript oppgave. Metamodellen.
Oppgaver til kodegenerering etc. INF-5110, 2013 Oppgave 1: Vi skal se på koden generert av TA-instruksjonene til høyre i figur 9.10 i det utdelte notatet,
02 - Java datatyper Grundlæggende om datatyper og variable.
1 | 2010 Internetteknologi 2 (ITNET2) Kort teknisk ASP.NET introduktion Mandag den 4/ Jesper Tørresø.
Linq – The Basics Arve Bjørnerud 20. November 2009.
Norwegian Ministry of Labour Engelsk mal: Startside Tips norsk mal Klikk på utformingsfanen og velg først ikon; DEPMAL – norsk. Eller velg DEPMAL– norsk.
Sensitive tema Hva gjør jeg hvis misnøye med utseendet ser ut til å være et problem for en deltaker eller kollega LIFELONG LEARNING PROGRAMME This project.
Project Fusion The power of combining resources. L y s b i l d e u t f o r m i n g : ” M / L O G O ” // V e l g b l a n t m a n g e l y s b i l d e o.
Tabeller Dette er en tabell, eller array. Den kan defineres sånn som dette: public int[] heltallsTabell = new int[11]; //Her er 11 tabellens lengde for.
Redusere kompleksitet i Entity Framework spørringer Skrevet av Tore Aurstad,
Planning and controlling a project Content: Results from Reflection for action The project settings and objectives Project Management Project Planning.
 A fjord is a small bit of water between two mountains or cliffs and they are very famous in Norway.
OpenEdge og.NET Jan Kolstad PUG Norway Lillehammer 2004.
1 Java Database Connectivity (JDBC) Norvald H. Ryeng
Object  Klassen i java  Alle klasser arver fra denne om ikke noe annet blir spesifisert  ArrayList.add(Object instans)  Alle elementer formes til Object.
Klar for ferie Out of office / Kalender / Spam Filter Tema1/2timen –
Lokale variable Hvis vi trenger å ta vare på en verdi, inne i en metode kan vi definere en lokal variabel: int amount = 0; vi må fortelle hvilken type.
Nyttige kommandoer $df -h Viser diskbruk $lspci Lister pci kortene $cd
INF5110 – 23. april, 2013 Svar på noen oppgaver til kap
أعداد القاضي / حاتم جعفر رئيس المكتب الفني بمركز المعلومات القضائي
V Tilpass dette banneret med din egen melding. Merk bokstaven og legg til egen tekst. Bruk ett tegn per lysbilde.
Kom i gang med Alma Analytics i dag!
Kaveet Patel – Education Officer
Database.
Model til tekst transformasjoner med MOFScript
Utskrift av presentasjonen:

Criteria Når og hvorfor bruke Criteria i Hibernate

Hva er Criteria Et alternativ til HQL Representerer en spørring mot en enkelt, persistent klasse Innsnevring av søket ved å legge til restriksjoner (Restrictions)

Hvorfor Criteria? Gi renere Java-kode ved et avansert søk Bedre støtte for unike resultater ved mange foreninger av andre tabeller

SQL vs HQL vs. Criteria Alle rader SQL SELECT * FROM user; HQL Query query = getSession().createQuery(”from User”); Criteria Criteria criteria = getSession.createCriteria(User.class);

SQL vs HQL vs. Criteria (frts.) Alle rader med e-post lik … SQL SELECT * FROM user WHERE = ?; HQL Query query = getSession().createQuery(”from User u where u. = : ”); query.setParameter(” ”, ); Criteria Criteria criteria = getSession.createCriteria(User.class); If ( != null && .length() > 0) critera.add(Restriction.eq(” ”, );

Så hva er ”greia”? What’s the big deal, lizm..? For enklere spørringer gir det tyngre syntaks. Bruk HQL! For kompliserte spørringer er det motsatt. Eksempel på HQL følger:

Eksempel på tyngre HQL String hql = ”from Project p where lower(p.title) like lower (:searchString) or lower (p.user.unit) like lower (:searchString) or lower (p.user.fullname) like lower (:searchString)”; if (fromDate != null) hql += ” and p.dateRegistered > :fromDate”; If (toDate != null) hql += ” and p.dateRegistered < :toDate”; Query query = getSession.createQuery(hql); query.setParameter(”searchString”, ”%” + searchString + ”%”; if (fromDate != null) query.setParameter(”fromDate”, fromDate); if (toDate != null) query.setParameter(”toDate”, toDate);

Oversatt til Criteria Criteria criteria = getSession().createCriteria(Project.class); criteria.addAlias(”user”, u); criteria.add(Restriction.disjunction().add(Restriction.ilike(”title”, searchString, MatchMode.ANYWHERE)).add(Restriction.ilike(”u.unit”, searchString, MatchMode.ANYWHERE)).add(Restriction.ilike(”u.fullname”, searchString, MatchMode.ANYWHERE))); if (fromDate != null) criteria.add(Restriction.gt(”dateRegistered”, fromDate); If (toDate != null) criteria.add(Restriction.lt(”dateRegistered”, toDate);

Når brukes Criteria? Når en ellers må bygge opp HQL-strengen med mange parametere, ved ”hql += …” Ved komplekse AND- og OR-søk blandet Når en ønsket et unikt resultat fra forening med mange andre tabeller. HQL støtter ikke dette. Criteria: criteria.setResultTransformer( Criteria.DISTINCT_ROOT_ENTITY);

Ikke overbevist? Q: Criteria er mye tyngre enn HQL A: Ja! Q: Og derfor? A: Vel, hvis du synes det er bedre å lese følgende kode, så og ahead! Og husk at du i tillegg må implementere fjerning av dupliserte rader fra resultatet ved forening av mange tabeller!

For de HQL-frelste tring hql = "select project from Project project join project.user user where \n" + "( lower(project.title) like lower(:searchString) \n" + " or lower(user.unit) like lower(:searchString) \n" + " or lower(user.fullname) like lower(:searchString) ) \n"; if (doBothDateSearch) { hql = hql + " and ( project.dateRegistered > :fromDate \n"; hql = hql + " and project.dateRegistered :fromDate \n"; } if (doToDateSearch) { hql = hql + " and project.dateRegistered < :toDate \n"; } if (infoDelivered == true) { hql = hql + " and lower(project.informationDelivered) like 'ja' \n"; } if (students) { hql = hql + " and 1 member of project.categories \n"; } if (employees) { hql = hql + " and 2 member of project.categories \n"; } if (others) { hql = hql + " and 3 member of project.categories \n"; } Query query = getSession().createQuery(hql); query.setParameter("searchString", "%" + searchString + "%"); if (doBothDateSearch) { query.setParameter("fromDate", fromDate); query.setParameter("toDate", toDate); } if (doFromDateSearch) { query.setParameter("fromDate", fromDate); } if (doToDateSearch) { query.setParameter("toDate", toDate); }