2012-06-30 8 views
7

Sono nuovo di ibernazione. Mi aiuti per favore.Abbiamo bisogno di mappatura Hibernate In questo scenario?

Ho 2 tabelle denominate Dipendente e Paese. Devo salvare il Dipendente con il paese selezionato. Nel mio caso, non otterrò mai i dettagli dei dipendenti e mostrarli sull'interfaccia utente. Devo mantenere la mappatura (mappatura onone) tra oggetti Dipendente e Paese? Non posso salvare direttamente un dipendente con il paese selezionato?

posso fare come di seguito nel mio oggetto dominio Dipendente? In caso contrario, per favore dimmi potenziali problemi con questo?

@column (name = "countryID")

private int countryID;

+0

Sì, è possibile farlo nell'oggetto dominio Employee. Se non hai bisogno di un oggetto Paese, perché crearne uno? Basta essere sicuri di mantenere il membro dei dati giusto. Dovrebbe essere l'ID del paese, o il nome o l'abbreviazione è una scelta migliore? Dovrebbe essere parte del Dipendente o, forse più ragionevole, l'oggetto Indirizzo? – duffymo

+0

Perché conservi gli impiegati se non li usi mai? –

+0

Dato che un'altra applicazione necessita di dettagli sui dipendenti, la sto salvando tramite la mia applicazione. (Ho preso dipendente solo per una facile comprensione, non è esattamente dipendente) –

risposta

1

Sì, è possibile inserire CountryId nel proprio oggetto dipendente. Ma se in futuro non è necessario il numero dell'oggetto Paese, non ha alcun senso per salvare l'oggetto Paese.

Se si stanno sviluppando le cose per il potenziale futuro e potrebbe essere richiesto in futuro ma non ora è meglio salvare l'oggetto Paese.

2

Credo che potresti avere un paio di opzioni qui.

  1. Si può semplicemente lasciare la primitiva country completamente fuori dalla classe del dominio. Se non ne hai bisogno, non c'è motivo di dire a Hibernate di recuperarlo.
  2. Se non si intende modificarlo, mapparlo nella classe dominio e applicare l'annotazione @Transitive potrebbe ottenere ciò che si sta cercando. Questo dice ad Hibernate che nulla dell'ID del Paese deve persistere a livello di database.

Uno di questi metodi consente di garantire l'integrità referenziale tra l'oggetto employee e l'ID del paese. Consiglierei di usare il primo, però. Se non hai assolutamente bisogno di avere l'ID del paese, non renderlo parte dell'oggetto in primo luogo.

Se si ha bisogno di utilizzare il Country ID per un rapporto sul retro, io suggerirei di fare in modo che si include questa

@Column(name = "country", insertable = "false", updatable = "false"). 

Questo consente di ottenere ID paese senza temere si sovrascrive accidentalmente.

Spero che questo aiuti!

Problemi correlati