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   Addressmantenere 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àUserstessa? 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?