Avatar billede conrad Nybegynder
13. januar 2003 - 11:58 Der 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?
Avatar billede arne_v Ekspert
13. januar 2003 - 12:15 #1
Hvornår skal man bruge entity beans ?

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.
Avatar billede cbox Nybegynder
13. januar 2003 - 13:05 #2
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.
Avatar billede arne_v Ekspert
13. januar 2003 - 13:30 #3
cbox>

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
Avatar billede cbox Nybegynder
13. januar 2003 - 14:30 #4
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.
Avatar billede arne_v Ekspert
13. januar 2003 - 14:41 #5
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.
Avatar billede conrad Nybegynder
13. januar 2003 - 17:28 #6
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.
Avatar billede conrad Nybegynder
13. januar 2003 - 17:34 #7
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)?
Avatar billede arne_v Ekspert
13. januar 2003 - 19:07 #8
"Rigtig" J2EE er:

browser--JSP/servlet--session bean--entity bean--database
Avatar billede arne_v Ekspert
13. januar 2003 - 19:10 #9
Jeg vælger normalt at oprette tabeller først og så deploye
entity beans med create=false.

Men du kan også bare deploye med create=true.

En entity bean klasse er groft sagt en tabel.

En entity bean instans er groft sagt en record.

[man kan godt have en entity bean som baserer sig på
en join af flere tabelle, men det er ikek så almindeligt]

Entity beans er en måde at tilgå databasen på. En ret avanaceret
metode.

Og derfor også med et vist overhead.
Avatar billede arne_v Ekspert
13. januar 2003 - 19:10 #10
Du kan godt pakke dine utility klasser ned i EJB JAR filen.
Avatar billede arne_v Ekspert
13. januar 2003 - 19:12 #11
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.
Avatar billede conrad Nybegynder
14. januar 2003 - 08:31 #12
Tak for de gode forklaringer arne_v. Jeg kan se jeg har nogle lange nætter foran mig :)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester