summaryrefslogtreecommitdiffstats
path: root/documentation/sqlcontainer/sqlcontainer-architecture.asciidoc
blob: ff0dd6fdd39b93d24533accc0b644d076faddc71 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
---
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.