Nějakou dobu jsem zanedbával certifikace. Říkal jsem si, že bych mohl konečně dotáhnout JPA a v rámci přípravy jsem narazil na pár zajímavostí. Přitom jsem si zoufal, že jsem mohl předchozí projekty napsat výrazně lépe, ale utěšuje mě myšlenka, že byste měli být nespokojení se svým kódem, který jste napsali před rokem. Konkrétně chci psát o vazebních tabulkách legacy databází, které nejsou triviální, tj. neobsahují jen klíče ale i nějaká metadata.

Databáze

Je dána databáze, nad kterou stavíte aplikaci s JPA.

Naivní řešení

Jako první vás jistě napadne řešení, které jsem sám doposud používal, vytvořit entitu EmployeeProject. Funguje to, ale předpokládejme že nejčastěji vás bude zajímat přistup z entity Employee na Project, ale přitom musíte jít přes entity EmployeeProject.

Elegantní řešení

Existuje ovšem elegantnější řešení, jak se z Employee dostat přímo k entitám Project a zároveň mít případně k dispozici i metadata v embeddable objektu ProjectAllocation. (V anglické terminologii Relationship State či Association class)

Související