!"#"$%%$&'()*+,-*./0"' !"#$%&'(&)%*+,'-'./#0"'.1)$2$# .3*"24&$24%'5#6/*7"+$/#,8%*"*)%$+1#9 :#$8%*,$+;+'<1'=>&# ./77%*,%7%,+%*'?@A@ ! ! 1/,2304 ! Pfl ichtenheft ! Möglichkeiten der Persistenz ! Relationale Datenbanken ! Java und Datenbanken " JDBC " JPA " Objektrelationales Mapping " Zugriff auf bestehende Datenbank ! Modellierung ! .3*"24&$24%'5#6/*7"+$/#,8%*"*)%$+1#9'B':#$8%*,$+;+'<1'=>&#'B'./77%*,%7%,+%*'?@A@ ! !"+%#)"#C%# &*'-/-,*02 ! Serialisierung von Objekten ! Speichern von Daten in strukturierten Textdateien wie CSV, XML, … ! Datenbanken " Relationale DB ! " Objekt-DB " Mischform " XML-DB .3*"24&$24%'5#6/*7"+$/#,8%*"*)%$+1#9'B':#$8%*,$+;+'<1'=>&#'B'./77%*,%7%,+%*'?@A@ ! !"+%#)"#C%# 5*6",/(0"6*$7",*08"0+*0 ! Verknüpfte Tabellen ! Spalten haben Datentypen (varchar, int, date) ! Spalten können Constraints haben (z. B. UNIQUE, max. length 128) ! Sinnvoll: Primärschlüssel für jede Tabelle ! Relationen zwischen Tabellen durch Fremdschlüssel ! Relationen haben eine Kardinalität („1 zu n“, „n zu m“) ! Wichtige Schlüsselwörter: " SELECT, INSERT, UPDATE, DELETE ! " FROM, WHERE,... " ORDER BY, GROUP BY, JOIN, LIMIT, … .3*"24&$24%'5#6/*7"+$/#,8%*"*)%$+1#9'B':#$8%*,$+;+'<1'=>&#'B'./77%*,%7%,+%*'?@A@ ! !"+%#)"#C%# 5*6",/(0"6*$7",*08"0+*0 ! .3*"24&$24%'5#6/*7"+$/#,8%*"*)%$+1#9'B':#$8%*,$+;+'<1'=>&#'B'./77%*,%7%,+%*'?@A@ ! !"+%#)"#C%# 5*6",/(0"6*$7",*08"0+*0 ! Verknüpfte Tabellen ! Spalten haben Datentypen (varchar, int, date) ! Spalten können Constraints haben (z. B. UNIQUE, max. length 128) ! Sinnvoll: Primärschlüssel für jede Tabelle ! Relationen zwischen Tabellen durch Fremdschlüssel ! Relationen haben eine Kardinalität („1 zu n“, „n zu m“) ! Wichtige Schlüsselwörter: " SELECT, INSERT, UPDATE, DELETE ! " FROM, WHERE,... " ORDER BY, GROUP BY, JOIN, LIMIT, … .3*"24&$24%'5#6/*7"+$/#,8%*"*)%$+1#9'B':#$8%*,$+;+'<1'=>&#'B'./77%*,%7%,+%*'?@A@ ! !"+%#)"#C%# 5*6",/(0"6*$7",*08"0+*0 SELECT * FROM album D'(&&%'E$#+*;9%F'G$%'$#'G%*'H")%&&%'!"#$%'%#+4"&+%#',$#GI SELECT title, name FROM album_artist LEFT JOIN album ON (album_artist.fk_album_id = album.id) LEFT JOIN artist ON (album_artist.fk_artist_id = artist.id) WHERE artist.name LIKE '%herbert%' D'H$+%&'G%,'(&)17,'1#G'J"7%'G%,'(*+$,+,'"1,'G%#'0%K%$&$9%#'H")%&&%#' 8%*C#L36+'G1*24'!"#$%&!'()*(+, K/'G%*'=L#,+&%*#"7%'G$%'M%$24%#C%++%'N4%*)%*+N'%#+4;&+ ! .3*"24&$24%'5#6/*7"+$/#,8%*"*)%$+1#9'B':#$8%*,$+;+'<1'=>&#'B'./77%*,%7%,+%*'?@A@ ! !"+%#)"#C%# !"#"$309$7",*08"0+*0 B'O*"P$,+%$&'Q!RS'B ! .3*"24&$24%'5#6/*7"+$/#,8%*"*)%$+1#9'B':#$8%*,$+;+'<1'=>&#'B'./77%*,%7%,+%*'?@A@ ! !"+%#)"#C%# !"#"$309$7",*08"0+*0 ! Q!RS'TQ"8"'!"+")",%'S/##%2+$8$+UV'D'W*1#G&"9%'6L*'!RBM19*$66'$#'Q"8" " O*/)&%7% " .+"+%7%#+,'G"+%#)"#C,3%<$6$,24 " =%$#'X%,,/1*2%#7"#"9%7%#+'T<I'RI'Y%*)$#G1#9%#' >66#%#Z,24&$%[%#V " \"33$#9'8/#'!"+%#+U3%#'3*/)&%7"+$,24 ! QO('TQ"8"'O%*,$,+%#2%'(O5V " ])0%C+*%&"+$/#"&%,'\/G%&& " Q"8"B])0%C+%'K%*G%#'"16'!RBH")%&&%#'L)%*+*"9%# " !",'L)%*#$77+'G$%'QO(B573&%7%#+$%*1#9'T<I'RI'E2&$3,%&$#CV " .+"+%7%#+,'$#'QO^_ ! .3*"24&$24%'5#6/*7"+$/#,8%*"*)%$+1#9'B':#$8%*,$+;+'<1'=>&#'B'./77%*,%7%,+%*'?@A@ ! !"+%#)"#C%# !"#"$309$7",*08"0+*0 B'\/G%&&$%*1#9'7$+'QO('B ! .3*"24&$24%'5#6/*7"+$/#,8%*"*)%$+1#9'B':#$8%*,$+;+'<1'=>&#'B'./77%*,%7%,+%*'?@A@ !