Newsgroup: it.comp.java
Titolo: Hibernate ed Ejb

Salve ragazzi sto cominciando lo studio di Hibernate, ed ho notato che 
esso è associato spesso all'utilizzo di ejb, vorrei sapere il motivo, 
visto che se non sbaglio hibernate viene utilizzato per la persistenza 
ad oggetti sul DB, ed ejb viene usato sostanzialmente per l'utilizzo di 
oggetti remoti, quindi perchè queste due tecnologie spesso vengono usate 
insieme?


Se stai cominciando ora a sto punto studia gli ejb3. Gli Ejb3 entity sono
un'identita' con hibernate, cioe' la stessa cosa e la tua domanda non serve
piu'.
ciao Nicola
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 piu'.
In che senso sono la stessa cosa? Con Ejb3 entity posso lavorare ad 
oggetti e persistere nel DB, come si fa con hibernate? Se è così, a quel 
punto che senso ha usare anche Hibernate?

 punto che senso ha usare anche Hibernate?
Me lo chiedo anch'io. L'idea che mi sono fatto e che aveva senso prima 
che uscisse la specifica ejb3-entity e la Java Persistence API.
Io ho cominciato ad affrontare il problema di persistere oggetti nei 
database quando ormai era uscita la specifica ejb3 entity, quindi ho 
risolto tutti i miei problemi studiando la Java Persistence API senza 
bisogno di studiare alcun che di Hibernate.
Pero' facendo colloqui che un sacco di gente ricerca gente che conosce 
Hibernate, credo che il motivo sia perché ci sono tanti progetti 
iniziati prima delle specifiche EJB3.0 che hanno scelto Hibernate come 
ORM. Quindi un motivo per usare Hibernate potrebbe essere quello di 
essere appetibili dal punto di vista delle compentenze. Poi ce ne 
saranno altri che non conosco perché non conosco la tecnologia.

 punto che senso ha usare anche Hibernate?
Me lo chiedo anch'io. L'idea che mi sono fatto e che aveva senso prima
che uscisse la specifica ejb3-entity e la Java Persistence API.
Io ho cominciato ad affrontare il problema di persistere oggetti nei
database quando ormai era uscita la specifica ejb3 entity, quindi ho
risolto tutti i miei problemi studiando la Java Persistence API senza
bisogno di studiare alcun che di Hibernate.
Pero' facendo colloqui mi sono accorto che in molti cercano gente che 



Ma non e' vero che sono la stessa cosa.
Hibernate implementa le specifiche JPA che fanno parte delle specifiche 
EJB3.
Quindi non tutto cio' che e' hibernate e' JPA (anzi), mentre le specifiche 
JPA sono totalmente (che io sappia) implementate da Hibernate. 

 JPA sono totalmente (che io sappia) implementate da Hibernate.
 Cosa si puo' fare con hibernate che non si puo' fare in ejb3 ?


 
Ad esempio se devi ottimizzare query, cache ecc, devi per forza scendere 
al livello  del provider in quanto JPA non contempla questo tipo di 
configurazioni.
Queste "customizzazioni" andranno ovviamente riscritte se si cambia da 
hibernate a toplink ad esempio. Il resto (mappaggi ecc) non andranno 
riscritti invece.
Altre cose potrebbero essere le diverse tipologie di flushing della 
sessione (non tutte hanno un corrispettivo JPA) oppure le annotazioni 
per la validazione (@Length ecc.) non presenti in EJB3...
Boh, ce ne saranno anche molte altre.

 Boh, ce ne saranno anche molte altre.
Premesso che conosco molto bene sia hibernate che gli entity ejb3 mi pare
poca questa differenza per utilizzare hibernate al posto degli ejb3,
soprattutto se gli ejb3 vengono usati anche per la logica, nel qual caso
andremmo a incasinare parecchio l'architettura inutilmente.
se poi uno e' allergico agli ejb3 il problema non si pone, la domanda
iniziale del mittente non ha piu' senso e si ricade in un dibattito appunto
sugli ejb3 e sulla loro efficacia.



A me sembra che per chiarificare le idee al mittente bisogna dire 
esattamente quale e' la relazione tra EJB3 e Hibernate:
Hibernate, tra le altre cose, implementa JPA, che fa parte delle specifiche 
EJB3.0. 

cicap ha scritto:

Io ancora non ho capito dove con ejb 3.0 si gestisce la mappatura della 
tabella del db e la classe java e dove vengono inseriti i parametri di 
connessione al dababase, con hibernate questo si faceva tramite xml, con 
ejb 3.0 ancora lo devo scoprire...

 ejb 3.0 ancora lo devo scoprire...
Negli ejb3 entity prima dei metodi getXXX aggiungi delle annotations ( delle
chiocciole @ ) che mappano le entita' alllo stesso modo del file xml,
eliminandolo e aumentando la leggibilita' del programma.


 hibernate tramite il metodo getDelegate(), e utilizzare quella.
Si ma se non mi date delle motivazioni piu' convincenti di quelle esposte di
quale e' il vantaggio di usare hibernate rispetto a ejb3, oltre ad avere il
flush otiimizzato ( che manco so che e' il flush ) a mio parere un
architettura con
EJB 3 Session + EJB 3 Entity la vedo molto piu' omogenea , semlificata ed
elegante di
EJB3 Session + Hibernate
di fatto avendo meta' classi ejb e meta' pojo + i file file xml + la session
di hibernate.
Se mi trovate uin articolo che spiega le motivazioni di sto casino ci metto
un millisecondo a ricredermi e magari nei prossimi progetti ci faccio un
pensierino anche io, ma se non ci sono motivazioni mi pare un delirio
architetturale inutile.


 EJB3 Session + Hibernate
Se utilizzi un server come JBOSS che ha come provider HIbernate puoi
semplicemente aggiungere le annotazioni proprietarie di hibernate
quando serve (per esempio per gestire il prefetching)

 
Semplicemente se ti serve una feature particolare di hibernate (e solo 
sua), la usi. Non vedo sto gran casino:
@Length(max=50)
private String value;


oki tutto claro
uso gli ejb3 come sintassi e se serve uso qualche annotation privata
di fatto come sintassi pero' non uso piu' hibernate
