8/66
\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}