Use ADF engine to generate SQL
ADF engine was designed to support the development of transnational applications (OLTP). However, it provide the relational database access via the ADF Objects. In these cases, typically, the data UI is based on is cached inside the JVM. The data entered from the UI can be validated before commit and flush into the database.
OTBI, on the other hand, does not really leverage the database cache provided by ADF. ADF engine was enhanced to provide the composite VO API. The concept of composite VO, based on my understanding, is to generate a VO on the fly based on the View Object , View Link, and View Criteria passed in to the API. It is pretty much a query on the ADF VO definition and use the definition to generate a SQL.
BI server acquire the SQL generated by ADF engine and run the SQL against the database directly. The underlying assumption was running SQL against database is much faster than running the SQL against the ADF cache.