This illustration shows how TopLink fits into a typical J2EE architecture made up of an Application Server, TopLink, an optional J2EE Container, and a Data Source. TopLink is made up of a Session front-end and a Data Access back-end. The Session and Data Access components make use of Mappings (project XML metadata), Query framework, Cache, and Transaction components. Client applications (such as JSP, Servlet, and Struts) access TopLink by way of the Session. The Session provides access to the Query framework and Transaction component. Both these components benefit from the Cache to minimize trips to the Data Source. In a J2EE Container architecture, the Transaction component can be integrated with JTA. The Data Access component accesses the Data Source by way of JDBC in both J2EE Container and non-J2EE Container architectures. Client Application entities (such as Java Objects and EJB Entity Beans) can take advantage of TopLink J2EE Container support for both Container and Bean Managed Persistence.