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 A7B36ASS – Architektura SW systémů LS 2014.

Podobné prezentace


Prezentace na téma: "Foreign key mapping Jakub Chalupa Naim Ashhab ČVUT FEL A7B36ASS – Architektura SW systémů LS 2014."— Transkript prezentace:

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

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

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

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) { this.title = 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) { this.title = title; } public Album getAlbum() { return album; } public void setAlbum(Album album) { this.album = album; }

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

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á

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) { this.team = team; }... /*name getter and setter*/... } class Team... { private String name; private List players; public Team(Long id, String team, List players) { super(id); this.name = name; this.players = players; } public List getPlayers() { return players; } public void setPlayers(List players) { this.players = players; } public void addPlayer(Player player) { if(!players.contains(player)) { players.add(player); } public void removePlayer(Player player) { players.remove(player); }

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

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

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

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 A7B36ASS – Architektura SW systémů LS 2014."

Podobné prezentace


Reklamy Google