This illustration shows how TopLink fits into a typical Java EE architecture made up of an Application Server, TopLink, an optional Java EE 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 Java EE Container architecture, the Transaction component can be integrated with JTA. The Data Access component accesses the Data Source by way of JDBC in both Java EE Container and non-Java EE container architectures or JCA for EIS data sources. Client Application entities (such as Java objects and EJB entity beans) can take advantage of TopLink Java EE container support for both container- and bean-managed persistence.