PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Sospensione 'Inverse' nel file di mappatura

Inverse decide semplicemente quale entità in una relazione è responsabile dell'aggiornamento del database per riflettere l'associazione.

Assumere un'associazione bidirezionale uno a molti. Ci sono due classi nel codice A e B, A contiene un insieme di B, B mantiene un riferimento ad A. A livello di database, c'è solo una chiave esterna da aggiornare, la tabella per B contiene una colonna a chiave primaria di A.

In questo caso, supponiamo di mettere l'inverso =vero sul lato dell'insieme. Ciò implica che la semplice aggiunta di un'entità al set non attiverà l'aggiornamento della chiave esterna. Perché la responsabilità di aggiornare la chiave esterna spetta a B. Quindi, aggiungere un oggetto B all'insieme che A mantiene non è sufficiente per aggiornare la colonna della chiave esterna. objectA.addToSetOfB(objectB) non influirà sulla chiave esterna.

Solo quando a B viene fornito un riferimento ad A, la chiave esterna nella tabella per B verrà aggiornata. Quindi, objectB.setA(objectA) aggiornerà sicuramente la chiave esterna e imposterà effettivamente la relazione.

Penso che lo stesso concetto porterà anche molti a molti rapporti.