Developers need a standard way to bind services to Java UIs and to simplify the use of different service implementations in the model. As a developer, you need to know and understand the specifics of the technology that is used to persist data in your application. It can take a lot of time to write boilerplate code to create interactions between UI components and services.
ADF Model provides a generalized approach. ADF Model offers a layer of abstraction, describing the middle-tier business services to the view, so that the developer is insulated from the specifics of the underlying service implementation. Instead of binding the view to the business services, you bind the view to the model, and the model is bound to the business service by a data control and exposed to the developer through a binding. In short, ADF Model provides a common API to bind data from a business service to a UI. Out-of-the-box, ADF Model supports data controls for services based on Java classes, EJB session beans, Web services, and ADF Business Components.
Data controls are an ADF Model layer that represents the back-end business services. Each time you create an ADF BC application module, a data control is automatically created that contains all the view object instances and client methods that are exposed in the application module. Data control is what enables you to bind UI components to the back-end data.