Web应用一个重要的组成部分为访问数据库,Vaadin提供的SQLContainer 实现了Container接口用来连接各种数据库。
SQLContainer支持两种类型的数据库访问,通过TableQuery,使用这一预设的查询生成器可以通过Container接口直接读取,更新,插入数据库表格中。而使用FreeformQuery允许程序员使用自定义的查询语句来读取数据,并可以选择实现如何写入数据库,过滤或者排序。
SQLContainer支持使用JDBC连接或是Java EE 连接池来连接数据库。
SQLContainer 为Vaadin Container接口的一个实现,其中接口Property 和Item 的实现类为ColumnProperty 和RowItem。 Item ID 则对应到 RowId 或是TemporaryRowId类。 RowId的实现则基于数据库的主键。
JDBCConnectionPool 定义JDBC连接池接口,Vaadin内置两个实现,一为SimpleJDBCConnectionPool 用于JDBC数据库连接,而J2EEConnectionPool则用来连接Java EE数据源。
query 包定义了QueryDelegate 接口, 定义了SQLContainer 所需的API以支持数据库的读写操作。 前面说过这个接口有两个实现:一是TableQuery ,另外一个是FreeformQuery 。
query 包还定义了Filter和OrderBy类,可以支持Container的过滤和排序。
最后generator 包定义了SQLGenerator 接口,定义了类TableQuery所需要的一些查询。 Vaadin提供的支持包括HSQLDB,MySQL, PostgreSQL (DefaultSQLGenerator), Oracle (OracleGenerator) 和 Microsoft SQL Server (MSSQLGenerator).
详细的API定义可以参见SQLContainer 文档。