Ho un'entità User
che ha un Set
di Address
dove Address
è un oggetto valore:
class User{
...
private Set<Address> addresses;
...
public setAddresses(Set<Address> addresses){
//set all addresses as a batch
}
...
}
Un User
può avere un home address
e un work address
, quindi dovrei avere qualcosa che funge da ricerca nel database:
tbl_address_type
------------------------------------------------ | address_type_id | address_type | ------------------------------------------------ | 1 | work | ------------------------------------------------ | 2 | home | ------------------------------------------------
e corrispondentemente tbl_address
------------------------------------------------------------------------------------- | address_id | address_description |address_type_id| user_id | ------------------------------------------------------------------------------------- | 1 | 123 main street | 1 | 100 | ------------------------------------------------------------------------------------- | 2 | 456 another street | 1 | 100 | ------------------------------------------------------------------------------------- | 3 | 789 long street | 2 | 200 | ------------------------------------------------------------------------------------- | 4 | 023 short street | 2 | 200 | -------------------------------------------------------------------------------------
- Il tipo di indirizzo dovrebbe essere modellato come tipo Entità o Valore? e perché?
- Va bene per l'oggetto Valore
Address
mantenere un riferimento all'EntitàAdressType
(nel caso in cui sia stato modellato come entità)? È qualcosa fattibile usando Hibernate / NHibernate? - Se un utente può modificare il suo indirizzo di casa, dovrei esporre una funzione
User.updateHomeAddress(Address homeAddress)
sull'entitàUser
stessa? Come posso far rispettare il fatto che il cliente passa un indirizzo di casa e non un indirizzo di lavoro in questo caso? (Un'implementazione esemplificativa è molto gradita) - Se voglio ottenere l'indirizzo di casa dell'utente tramite la funzione
User.getHomeAddress()
, devo caricare l'intero array di indirizzi, quindi eseguirne il ciclo e controllare ciascuno per il suo tipo finché non trovo il tipo corretto e poi lo restituisco? Esiste un modo più efficiente di questo?