13. januar 2003 - 11:58Der er
11 kommentarer og 1 løsning
Hvornår skal man benytte CMP?
Jeg laver et simpelt system hvor man fra en JSP side skal kunne oprette nogle brugere i en mysql database. Der skal foretages forskellige check, sendes mail ud m.m når brugere oprettes og derfor vil jeg lave det så der kun indtastes data i jsp siden. Dette gives videre til beans som så opretter i databasen og sender mail m.m.
Så er det jeg tænker: Hvornår skal man benytte sig af CMP?
Det skal man når man har nogle "business objects", hvor man er inde og bruge objekterne en af gangen og man kan lave mange forskellige slags opdateringer på dem.
Hvis man f.eks. kun bruge inserts og summariske queries, så vil der ofte være for meget overhead med entity beans.
Det lyder absolut som entity beans er relevant til din problem stilling.
Hvornå skal man bruge CMP entity beans ?
Altid - medmindre man er absolut tvunget til at bruge BMP af en eller anden meget speciel grund.
Med mindre du har brug for 2 phase commit-funktionalitet over flere platforme og/eller du arbejder med distribuerede objekter, er der efter min mening ingen grund til at bruge EJB. Som du beskriver opgaven lyder det som om at det kan klares med en eller flere 'almindelige' bønner.
EJB'er er distribuerede objekter, så det er meget svært at arbejde med EJB'er uden at arbejde med distrubuerede objekter !
Det er intention bag dem der har lavet J2EE at bruge entity beans til den slags business objekter.
Nogen kan lide EJB og andre kan ikke lide EJB. Mange har stærke følelser på det område.
CMP entity beans har betydeligt flere fordele end dem du nævner fremfor almindelige beans: - det meste af Java koden genereres - automatisk cache - indbygger security
EJB arkitekturen understøtter brug af distribuerede objekter, men man kan da sagtens bruge EJB'er uden at distribuere noget som helst. Jeg har ikke noget imod EJB'er, men jeg mener at de fleste løsninger hvor der benyttes EJB i virkeligheden er overkill. At der er flere fordele ved EJB end jeg nævner er korrekt, men vejet mod ulemperne mener jeg at man skal overveje meget nøje om det er nødvendigt at bruge dem. Som du selv skriver (arne_v) genereres det meste af koden automatisk. Det afhænger vel af hvilket værktøj der benyttes og om man er istand til at gennemskue hvad det er der bliver genereret for en. Det er IKKE en triviel opgave at sætte sig at kode en EJB i Notepad.
Jeg snakker ikke om den kode ens IDE wizard genererer, men om den kode serveren genererer ved deployment. To forskellige ting. Så det afhænger ikke af værktøjet. Og man er bedøvende ligeglad med hvad der bliver genereret, fordi hvis man overholde J2EE spec, så skal det virke.
Efter min bedste overbevisning er det helt trivielt at skrive en EJB i notepad. 2 interfaces og 1 class. Det er der ikke mange ben i.
Performance er i dette tilfælde "ligegyldigt" da der er tale om et skole projekt hvor målet er at få praktisk erfaring med J2EE. (Derfor ønsker jeg heller ikke at gå direkte fra JSP til databasen.)
Hvis jeg benytter mig af CMP skal jeg da ikke lave nogen database selv? Altså så kan EJB'erne i en eller anden forstand opfattes som databasen?
Under alle omstændigheder tror jeg jeg vil forsøge at lave en løsning a la: JSP -> EJB -> mySQL for at få det til at virke.
arne_v: Efter min bedste overbevisning er det helt trivielt at skrive en EJB i notepad. 2 interfaces og 1 class. Det er der ikke mange ben i.
Hvad hvis man ønsker at benytte en "almindelig klasse" fra EJB'en. Skal den så bare pakkes med i jar filen eller skal den placeres i et specielt dir på serveren (JBOSS)?
Bemærk, at afhængig af app-server og configuration af denne, så vil de klasser mulgvis være synlige for all EJB'er eller kun for de EJB'er i den samme JAR.
Tak for de gode forklaringer arne_v. Jeg kan se jeg har nogle lange nætter foran mig :)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.