Domanda

Il mio sviluppatori stanno conducendo una guerra civile.In un campo, hanno abbracciato, Hibernate e Spring.In altro campo, hanno denunciato quadri - si sta valutando la Sospensione però.

La domanda è:Ci sono brutte sorprese, di debolezza o di pit-cadute che newbie Hibernate-Spring convertiti sono probabilità di inciampare su?


PS:Abbiamo una libreria DAO che non è molto sofisticato.Dubito che ha Hibernate ricchezza, ma è il raggiungimento di una sorta di scadenza (es.non è stato cambiato negli ultimi progetti è incluso).

È stato utile?

Soluzione

Io ho usato la Sospensione di un certo numero di volte in passato.Ogni volta che ho eseguito in casi limite in cui determinare la sintassi devoluto in una caccia al tesoro attraverso la documentazione, Google, e le vecchie versioni.È uno strumento potente, ma poco documentato (ultima volta che ho guardato).

Come per la Primavera, appena circa ogni lavoro che ho intervistato per o guardati negli ultimi anni si occupano della Primavera, è davvero diventato lo standard de facto per Java/web.Il suo utilizzo è aiutare gli sviluppatori saranno più negoziabili in futuro, e ti aiuto come avrai una grande piscina di persone che capiranno la vostra applicazione.

Iscritto il tuo quadro è allettante, educativo e divertente.Non è così grande su di risultati.

Altri suggerimenti

Hanno denunciato quadri?

Che i suoi dadi.Se non si utilizza un off-the-shelf quadro, quindi è possibile creare il proprio.È ancora un quadro.

Sospensione ha la peculiarità di essere sicuro, ma che è perché il problema che si vuole risolvere è complesso.Ogni volta che qualcuno si lamenta di Sospensione ricordo di tutte le noioso codice DAO che avrebbero dovuto mantenere (se non lo si utilizza.

Un paio di consigli:

  • Hibernate è alcun sostituto per una buona progettazione di database.Sospensione schemi sono OK, ma si dovrà tweak loro di tanto in tanto
  • Alla fine si sta andando ad avere per capire come Hibernate pigro carichi classi e come che colpisce le cose.Sospensione, modifica il bytecode Java, e avrete bisogno di scavare in profondità, prima o poi, anche se solo per spiegare perché oggetto collegamenti sono null.
  • L'utilizzo di annotazioni, se possibile.
  • Prendetevi il tempo per imparare la Sospensione delle prestazioni tecniche di ottimizzazione, vi farà risparmiare nel lungo periodo.

Se si dispone di un lavoro abbastanza complesso di database, in Sospensione non può essere per voi.Al lavoro ci sono abbastanza di database complessi con un sacco di dati, e Ibernazione non funziona davvero per noi.Abbiamo iniziato a utilizzare iBATIS, invece.Tuttavia, conosco un sacco di negozi di sviluppo che utilizzano Sospensione con successo e a fare un sacco di duro lavoro per voi, quindi vale la pena considerare.

La primavera è un ottimo strumento se si sa come usarlo correttamente.

Direi che i quadri sono sicuramente una buona cosa - come altri hanno sottolineato, non si vuole reinventare la ruota.Primavera contiene un sacco di moduli, il che significa che non dovrete scrivere tanto codice.Non soccombere alla "Non Inventato Qui" sindrome!

Il caricamento pigro è il grande gotcha in MVC applicazioni che utilizzano la Sospensione per il loro framework di persistenza.Si carica l'oggetto del controllore e passare alla vista JSP.Alcuni o tutti i membri della classe proxy e tutto distrugge, perché la Sospensione della sessione è stata chiusa quando il controllore completato.

Hai bisogno di leggere il Aprire la Sessione di Vista articolo per capire il problema e trovare una soluzione.Se si utilizza questa Primavera l'articolo nel blog descrive la Primavera soluzione per la sessione aperta in visualizzazione problema.

Questa è una cosa che (ricordo) che sono caduto a quando ero nei miei giorni di Sospensione.Quando si elimina (varie) bambino gli oggetti da un insieme (in una entità padre) e quindi aggiungere nuovi soggetti della stessa collezione in una transazione senza risciacquo in mezzo, Sospensione da "inserire" prima "elimina".Se la tabella figlio ha un vincolo di unicità in una delle sue colonne, e si aspetta che lei non lo avrebbe violato dal momento che avete già cancellato alcuni dati prima (proprio come me), quindi preparatevi a essere frustrati.Sospensione forum suggerisce:

  1. E ' stato un DB difetto di progettazione, riprogettazione;
  2. flush (o commettere se si vuole) tra le elimina e inserti;

Io non riuscivo a fare entrambe le cose, e la fine di modificare la Sospensione sorgente e ricompilare.Era solo 1 riga di codice.Ma lo sforzo di trovare la linea è stata pari a circa il 27 tazze di caffè e 3 notti insonni.

Questo è solo un esempio dei problemi e stranezze che si può finire quando si utilizza Sospensione con nessun vero esperto in squadra di esperti:qualcuno con adeguate conoscenze circa la filosofia e il funzionamento interno di Sospensione).Il tuo problema, soluzione, litri di caffè, e la notte insonne numero può variare.Ma si ottiene l'idea.

Non ho lavorato molto con Java, ma ho fatto il lavoro in grandi gruppi di sviluppatori Java.L'impressione che ho ottenuto è stato che la Primavera è OK.Ma tutti erano sconvolti a Sospensione.Mezza squadra se ha chiesto "Se potessi cambiare una cosa, cosa vorresti cambiare?" e dire: "sbarazzarsi di Sospensione.".Quando ho cominciato a imparare Hibernate e mi ha colpito all'straordinariamente complessa, ma non ho imparato abbastanza (per fortuna ho spostato lungo) per sapere se la complessità è giustificata o meno (forse era richiedono per risolvere alcuni problemi complessi).

La squadra si sono sbarazzati di Primavera a favore della Guice, ma che era più simile a un cambiamento politico, almeno dal mio punto di vista agli altri sviluppatori, ho parlato.

Ho sempre trovato Hibernate per essere un po ' complesso e difficile da imparare.Ma come JPA (Java Persistence API) e EJB (Enterprise Java Beans) 3.0 è esistito per un po ' le cose hanno ottenuto molto più facile, io preferisco di gran lunga annotare le mie lezioni di creare mappature via JavaDoc o XML.Controllare il supporto Sospensione.Il vantaggio è che è possibile (ma non senza sforzo) per modificare la struttura di database in seguito, se necessario.Ho usato OpenJPA con grandi risultati.

Ultimamente sto utilizzando JCR (Java Content Repository) di più e di più.Amo il modo in cui il mio moduli possono condividere una singola archiviazione dei dati e che sono in grado di lasciare la struttura e le proprietà evolvere.Trovo molto più facile lavorare con i nodi e le proprietà piuttosto che la mappatura dei miei oggetti di un database.Una buona realizzazione è Jackrabbit.

Come per la Primavera, ha un sacco di caratteristiche che mi piace, ma la quantità di XML necessari per configurare significa che io non la uso mai.Io invece utilizzare Guice e piace assolutamente.

A raccolta, vorrei mostrare il tuo dubbio sviluppatori come Hibernate renderà la loro vita più facile.Come per la Primavera vorrei seriamente controllare se Guice è una valida alternativa, e quindi si tenta di mostrare come la Primavera/Guice fa lo sviluppo migliore e più facile.

Ho fatto un sacco di Spring/Hibernate sviluppo.Nel corso del tempo il modo in cui la gente ha usato una combinazione di entrambi è cambiata un po'.Originale HibernateTemplate approccio ha dimostrato di essere difficile eseguire il debug in quanto rondini e avvolge altrimenti utile eccezioni;parlare Hiberante direttamente con le API!

Si prega di continuare a guardare il codice SQL generato (configurare il vostro sviluppo di registrazione per mostrare SQL).Avere un livello di astrazione del database non significa che non devi pensare in SQL più;non ottenere buone prestazioni se è il contrario.

Prendere in considerazione il progetto.Ho scelto iBatis su Sospensione in diverse occasioni in cui abbiamo avuto severi requisiti di prestazioni, in complesso patrimonio di schemi o buona DBa in grado di scrivere eccellente SQL.

Come per la Sospensione:un ottimo strumento per l'applicazione che si occupa di una rapida evoluzione dello schema del database, una grande quantità di tabelle, fare un sacco di semplici operazioni CRUD.Rapporti con query complesse coinvolte sono meno ben gestito.Ma in questi casi preferisco la miscelazione in JDBC o nativo query.Così, per una risposta breve:Io credo che il tempo di apprendimento di Sospensione è un buon investimento (dicono che è compatibile con EJB3.0 e JPA standard, anche, ma che non è venuto nell'equazione quando ho valutato che per il mio uso personale).

Come per la Primavera...vedere La Bile Blog :)

Ricordate:i quadri non sono pallottole d'argento, ma non si dovrebbe reinventare la ruota sia.

Io lo trovo davvero molto utile utilizzare ben noto l'utilizzo di framework come Hibernate, perché si adatta al tuo codice in un apposito stampo, o un modo di pensare.Significato, dal momento che si sta utilizzando Hibernate, è possibile scrivere il codice in un certo modo, e la maggior parte se non tutti gli sviluppatori che sanno di Sospensione sarà in grado di seguire la tua linea di pensiero abbastanza facilmente.

C'è un rovescio della medaglia, naturalmente.Prima di diventare un hot shot Sospensione sviluppatore, si sta andando a trovare che si sta cercando di montare un quadrato in un foro circolare.Si SA cosa si vuole fare, e come si doveva fare prima Sospensione è venuto nella foto, ma di trovare il Hibernate modo di fare si può prendere...un po ' di tempo.

Ancora, per le aziende che assumono frequentemente consulenti, che hanno bisogno di capire un sacco di codice sorgente in un breve lasso di tempo) o in cui gli sviluppatori firmare e uscire di frequente, o di cui semplicemente non si vuole scommettere che la chiave che gli sviluppatori di rimanere per sempre e mai cambiare lavoro -- di Sospensione e di altri framework standard sono una buona idea, credo.

/Ace

Spring e Hibernate sono quadri che sono difficili da padroneggiare.Potrebbe non essere una buona idea per utilizzarli in progetti con scadenze strette, mentre si sta ancora cercando di capire i quadri.

I vantaggi dei quadri di riferimento è sostanzialmente quello di tentare di fornire una piattaforma per consentire la coerenza dei codici prodotti.Per esperienza, devi essere ben consigliato che gli sviluppatori con esperienza con i quadri di mettere in atto le migliori pratiche.

A seconda del tipo di applicazione e/o del database, ci sono anche le stranezze che avrete bisogno per aggirare per garantire che i quadri non ostacolare le prestazioni.

A mio parere, il più grande vantaggio di Primavera è che incoraggia e permette di migliori pratiche di sviluppo, in particolare accoppiamento, i test e più interfacce.Sospensione senza Molla può essere molto dolorosa, ma i due insieme sono molto utili.

Il retrofit di un progetto esistente di qualsiasi struttura che sta per essere doloroso, ma il processo di refactoring spesso ha dei seri vantaggi per la manutenzione a lungo termine.

Io sono d'accordo con molti post su questo.Ho usato entrambi, ampiamente, in una varietà di impostazioni.Se potessi annullare una decisione sarebbe di avere utilizzato Sospensione.In realtà abbiamo preventivato un rilascio di uno dei nostri prodotti di swap iBatis e Hibernate per la Primavera-JDBC per una migliore-di-tutti-i-mondi approccio.Posso avere un nuovo sviluppatore di ottenere fino a velocità utilizzando la Primavera-JDBC, Spring-MVC, Spring-Cio, e iBatis più veloce se ho solo il compito loro Sospensione.

Hibernate è troppo complicato per questo BACIO sviluppatore.E che dio vi aiuti con sospensione se il vostro DBA vede l'SQL generato il database vede e manda indietro con le versioni ottimizzate.

La risposta in alto menziona che la Sospensione è scarsamente documentata.Sono d'accordo che il manuale di riferimento online potrebbe essere più completa.Tuttavia, un libro scritto da Hibernate autori, 'Java persistence con Hibernate"è un must-read per ogni Sospensione utente e molto completo.

@slim - io sono con voi anche questa mattina.

Sembra un classico caso di Non Inventato Qui, Sindrome Di.Se non sono appassionati di primavera, si dovrebbero prendere in considerazione altre opzioni, piuttosto che di rotolamento di un proprio quadro (se si prende atto di farlo o meno). Guice viene alla mente come una possibilità.Anche picocontainer.Ci sono altri là fuori, a seconda di che cosa avete bisogno.

Spring e Hibernate sicuramente rendere la vita più facile.Iniziare con loro potrebbe essere un po ' di tempo all'inizio, ma vi sarà certamente trarre beneficio da esso più tardi.Ora XML viene sostituito da annotazioni, non c'è bisogno di digitare centinaia di righe di XML sia.

Si potrebbe considerare l' AppFuse per ridurre la curva di apprendimento:generare un'applicazione, di studio e di adattamento, e via andare.

I quadri non sono male.anche il Java SDK è un quadro.

Quello che probabilmente è lotta quadro proliferazione.Non si deve portare un quadro di riferimento per un progetto solo per il calcio, si dovrebbe portare il valore di coerenza in un tempo ragionevole.Ogni quadro richiede una curva di apprendimento, ma dovrebbe premiare con un aumento della produttività e funzionalità in seguito.

Se si lotta con il codice che è difficile eseguire il debug a causa del contrasto dell'uso di database, complicati meccanismi di cache, o una miriade di altri motivi.Sospensione aggiungerà il grande valore.a parte la curva di apprendimento (che ha preso circa 1 mese di lavoro pratico per me) non c'erano le insidie, purché si disponga di qualcuno per spiegare le nozioni di base per voi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top