Gå til innhold

Anbefalte innlegg

Jeg har tenkt å lage en søkemotor hvor jeg har ønsker å bruke Entitets bønner med CMP. Søkeparameterene skal være valgfrie. En skal for eksempel kunne søke på dato og navn, kun navn, kun dato, før gitt dato ol. Problemet er at jeg sannsynligvis må lage "findBy" metoder for hvert søke scenario, er dette tilfelle?

 

Jeg tenkte at det må være mulig å kunne generere EJB spørringer dynamisk, bestemt etter hvilke parameter som har verdi. Etter litt søk på nettet snublet jeg over JBoss sin <dynamic-ql/> deployment tagg. Etter som jeg forstår skal en, ved hjelp av denne taggen, kunne sende EJB spørringer til en generisk finder etter modulen er deployert på app.serveren. Er det noen her som har prøvd ut denne taggen i praksis? Jeg vil forvente ett ytelsestap, men hvor stort? Ett problem med denne taggen er at applikasjonen blir "vendor spesific". Jeg har prøvd å lete etter liknende tagger hos noen av de større app.server leverandørene, men jeg har kun funnet henvisninger til JBoss. Har noen tips?

 

I verste fall må jeg benytte meg av Entitets bønner med BMP... Men det er KUN et "if all else failes" alternativ...

 

Ja, det er mulig å lage select metoder med ett "resultatsett filter". Jeg vurderte også å legge ett filter i sesjons fasaden, men jeg ser på disse som "half assed" løsninger.

Endret av asha
Lenke til kommentar
Videoannonse
Annonse

Ser nok ut til at du må lage en egen findBy metode for alle søkene du ønsker. Eventuelt kunne du lagd en findBy metode som hadde et inparameter som angav hva for type søk det er, men du er likevel ikke noe særlig lengre her.

 

Klart en dynamisk løsning som du beskriver er nok ganske så kjekt det, men hvis du jobber med rett verktøy så er det uansett pent lite kode å skrive. Blant annet JBuilder generer det meste av EJB koden for deg.

Lenke til kommentar

La meg gi ett praktisk eksempel: Jeg har nå 5 søkeparameter som er valgfrie, det vil si 5! = 120 forskjellige kombinasjoner... altså, jeg må lage en Entitetsbønne med 120 finder metoder :wow:

Problemet mitt er ikke mengden kode, men antall finders en skal måtte forholde seg til... Videre skal rett søke scenario skal kalle på rett finder, la oss si at jeg fikset den biffen med if testing... 121 if tester :thumbup:

Endret av asha
Lenke til kommentar

Okay, så blir det litt mange alternativer det der :)

 

Hm... Hva med å heller gå over til en form for dynamsik oppbygging av sql setningene? Altså, du sender inn en flerdimensjonal tabell med hva du vil søke på, og verdien du vil søke etter. Da har du jo muligheten til å bygge opp en fiffi sql setning med ved hjelp av å kjøre en løkke på tabellen.

Lenke til kommentar

Vel, nå har det seg slik at jeg ønsker å bruke BMP som siste utvei. Alikevel har jeg laget en dynamisk sql generator... En godt kodet CMP vil alltid yte bedre enn BMP. Alikevel, jeg har funnet ut at jeg kan forvente ett ytelsestap på rundt 60% ved å benytte meg av dynamisk EJB QL ( ikke det samme som SQL, men likner:

SELECT DESTINCT Object(C) FROM ejbKunde C WHERE C.kundeNavn=?1 

... Ytelsestapet på 60% høres i utgangspunktet stort ut, men vil for min applikasjon sin del bety en økning på 100 millisekund for å gjennomføre en spørring... Takk for tipset allikevel

Endret av asha
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...