\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}