Nějakou dobu jsem zanedbával certi­fi­kace. Říkal jsem si, že bych mohl konečně dotáh­nout JPA a v rámci přípravy jsem narazil na pár zajíma­vostí. 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 nespo­ko­jení se svým kódem, který jste napsali před rokem. Konkrétně chci psát o vazeb­ních tabul­kách legacy databází, které nejsou triviální, tj. neobsa­hují 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ředpok­ládejme že nejčas­tě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 elegant­nější řešení, jak se z Employee dostat přímo k entitám Project a zároveň mít případně k dispo­zici i metadata v embeddable objektu ProjectAllocation. (V anglické termi­no­logii Relationship State či Associa­tion class)

Související