\begin{frame}
\frametitle{How to Talk to a Database?}
\begin{goal}{}
\emph{Database application programming:}\\
how to access a database from an application?
\begin{itemize}
\medskip\pause
\item \emph{Static} embedded queries
\begin{itemize}
\item static SQL (preprocessor-based language extension)
\item inflexible, but syntax checked at compile time
\item e.g. SQLJ, Embedded SQL (C/C++)
\end{itemize}
\medskip\pause
\item \emph{Dynamic}
\begin{itemize}
\item dynamic SQL (queries constructed at runtime)
\item application programming interface (API)
\item powerful, but error-prone
\item e.g. JDBC, Python DB-API, ODBC, OLE-DB,\ldots
\end{itemize}
\medskip\pause
\item \emph{Object Relational Mappings (ORM)}, and beyond
\begin{itemize}
\item hide navigational access behind objects
\item e.g. JPA/Hibernate, RubyOnRails, ADO.NET/LinQ
\end{itemize}
\medskip
\end{itemize}
\end{goal}
\end{frame}
\theme{Dynamic SQL}