Recommended number and size of Application Module(s)
By Frank Nimphius-Oracle on Apr 04, 2011
Application Modules in Oracle ADF Business Components expose the data model, the View Object instances that application developers work with when building ADF applications using ADF Business Components as the business service choice. A frequent question is about the ideal number and size of Application Modules to ensure good performance. The answer to this question is that it depends on your application and the requirements you have. Remember that there are different types of Application Modules:
· Root Application Modules
· Nested Application Modules
· Shared Application Modules
Root application modules manage the transaction and therefore require their own database connection. The more root Application Modules an application uses, the more database connections – multiplied by the number of users using the application – are open at a given time. Shared Application Modules are good for sharing data queries, for example to populate list-of-values with data that is not individual to a specific user session and that does not change frequently. Using shared Application Module is like using a singleton in Java. Nested Application Modules share the database connection and transaction with the parent Application Module and are good to tailor the data model to a specific need or use case, making it easy for application developers to split the work in teams and understand functional boundaries.
So the question is not how many Application Modules you have but how many root Application Modules you use. The recommendation is to go with a minimum number of root application modules (a single one at best) and break down your application into uses of nested application modules. This break down could be by a one-to-one relation to use cases you identified for your application or more coarse grain logical units of work. The guidance to give therefore is to use many nested Application Modules to modularize large business services into manageable units representing a single use case or a logical unit of work, but to go with the a minimum of root application modules.http://download.oracle.com/docs/cd/E17904_01/web.1111/b31974/bcservices.htm#sthref844