--- title: Architecture order: 1 layout: page --- [[sqlcontainer.architecture]] = Architecture The architecture of SQLContainer is relatively simple. [classname]#SQLContainer# is the class implementing the Vaadin [classname]#Container# interfaces and providing access to most of the functionality of this add-on. The standard Vaadin [classname]#Property# and [classname]#Item# interfaces have been implementd as the [classname]#ColumnProperty# and [classname]#RowItem# classes. Item IDs are represented by [classname]#RowId# and [classname]#TemporaryRowId# classes. The [classname]#RowId# class is built based on the primary key columns of the connected database table or query result. In the [package]#connection# package, the [classname]#JDBCConnectionPool# interface defines the requirements for a connection pool implementation. Two implementations of this interface are provided: [classname]#SimpleJDBCConnectionPool# provides a simple yet very usable implementation to pool and access JDBC connections. [classname]#J2EEConnectionPool# provides means to access J2EE DataSources. The [package]#query# package contains the [classname]#QueryDelegate# interface, which defines everything the SQLContainer needs to enable reading and writing data to and from a database. As discussed earlier, two implementations of this interface are provided: [classname]#TableQuery# for automatic read-write support for a database table, and [classname]#FreeformQuery# for customizing the query, sorting, filtering and writing; this is done by implementing relevant methods of the [classname]#FreeformStatementDelegate# interface. The [package]#query# package also contains [classname]#Filter# and [classname]#OrderBy# classes which have been written to provide an alternative to the standard Vaadin container filtering and make sorting non-String properties a bit more user friendly. Finally, the [package]#generator# package contains a [classname]#SQLGenerator# interface, which defines the kind of queries that are required by the [classname]#TableQuery# class. The provided implementations include support for HSQLDB, MySQL, PostgreSQL ( [classname]#DefaultSQLGenerator#), Oracle ( [classname]#OracleGenerator#) and Microsoft SQL Server ( [classname]#MSSQLGenerator#). A new or modified implementations may be provided to gain compatibility with older versions or other database servers. For further details, please refer to the SQLContainer API documentation.