Quando il livello aziendale crea una nuova entità, che rappresenta logicamente un'istanza di un'entità esistente che deve essere aggiornata (diciamo che condivide la stessa chiave aziendale), questo è il metodo per fondere le cattive pratiche?unione di un'entità distaccata o nuova con un'entità esistente nella domanda di best practice hibernate/jpa
public User add(User user){
User existingUser = getUserDao().findByBusinessKey(user.getBusinessKey(), false);
user.setId(existingUser.getId());
user = getUserDao().merge(user);
return user;
}
Lo chiedo perché l'impostazione del ID esplicitamente sull'entità staccato si sente abbastanza strano per me, ma anche se il metodo equals e hashCode dell'entità utente siano adeguatamente implementato, impostando l'ID qui è l'unico modo per garantire l'unione ha luogo.
Esiste una pratica migliore?
Ci sono specifici inconvenienti a questo metodo che mi morderebbero più tardi?
Grazie per dare un'occhiata!
Una cosa che il mio frammento di codice non dimostrava era la definizione di getUserer(). Unire (utente) il risultato al riferimento utente originale ... aggiornando lo snippet per dimostrarlo. –
Perché avere un ID (generato automaticamente) e una chiave aziendale in primo luogo? Perché non utilizzare la chiave Busines come ID? Ciò presuppone che non cambi mai, naturalmente .. – bert
È sempre stata la raccomandazione del team di ibernazione da ciò che ho letto - e sembra funzionare bene nella maggior parte delle situazioni, tranne quella che ho posto: s http: // community.jboss.org/wiki/EqualsandHashCode –