Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Foreign key mapping Jakub Chalupa Naim Ashhab ČVUT FEL

Podobné prezentace


Prezentace na téma: "Foreign key mapping Jakub Chalupa Naim Ashhab ČVUT FEL"— Transkript prezentace:

1 Foreign key mapping Jakub Chalupa Naim Ashhab ČVUT FEL
A7B36ASS – Architektura SW systémů LS 2014 1

2 Foreign key mapping – úvod
Problém objekty jsou mezi sebou provázány referencemi objekt může udržovat kolekci referencí Příklad: skladby na albu skladba byla vydána právě na jednom albu album obsahuje více skladeb Jak na to? referenci zapíšeme jako cizí klíč do jedné z tabulek reprezentujících entitu 2

3 Foreign key mapping – schéma
Transformace relací mezi objekty do relační databáze album vlastní kolekci skladeb v databázi otočíme směr reference – skladba náleží jednomu albu 3

4 Foreign key mapping – single reference – implelementace
Skladba náleží albu skladba bude mít jedinou referenci na album class Album ... { private String title; public Album(Long id, String title){ super(id); this.title = title; } public String getTitle() { return this.title; public void setTitle(String title) { class Track ... { private String title; private Album album; public Track(Long id, String title, Album album) { super(id); this.title = title; this.album = album; } public String getTitle { return title; public void setTitle(String title) { public Album getAlbum() { return album; public void setAlbum(Album album) { 4

5 Foreign key mapping – single reference – sekvencní diagram
album má právě jednoho iterpreta načtení alba 5

6 Foreign key mapping – kolekce referencí
Situace hokejový tým se skládá z hráčů každý hráč patří právě do jednoho týmu Nevýhoda single reference u týmu chceme udržovat kolekci všech jeho hráčů single reference zde selhává 6

7 Foreign key mapping – kolekce referencí - implementace
class Player ... { private String name; private Team team; public Player(Long id, String name, Team team) { super(id); this.name = name; this.team = team; } public Team getTeam() { return team; public void setTeam(Team team) { ... /*name getter and setter*/ ... class Team ... { private String name; private List<Player> players; public Team(Long id, String team, List<Player> players) { super(id); this.name = name; this.players = players; } public List<Player> getPlayers() { return players; public void setPlayers(List<Player> players) { public void addPlayer(Player player) { if(!players.contains(player)) { players.add(player); public void removePlayer(Player player) { players.remove(player); 7

8 Foreign key mapping – zmeny v referencích
Problémy co se stane při smazání hráče z kolekce? co se stane při změně týmu u hráče? Řešení delete a insert smaž všechny reference a znovu vlož žádoucí back pointer diff ulož jednu entitu a porovnej jí s druhou 8

9 Foreign key mapping – pouzití
ORM všude u relací či 1 .. * JPA (Hibernate) 9

10 Foreign key mapping – shrnutí
Výhody efektivní převedení relace mezi objekty do relační databáze Nevýhody složitější logika při update a remove akcích Související vzory dependent mapping optimistic offline lock 10

11 Zdroje Martin Fowler - Catalog of Patterns of Enterprise Application Architecture (http://martinfowler.com/eaaCatalog/) Jimmy Nilsson – Applying domain-driven design and patterns: with examples in C# and .NET


Stáhnout ppt "Foreign key mapping Jakub Chalupa Naim Ashhab ČVUT FEL"

Podobné prezentace


Reklamy Google